С++: фичи, трюки и ловушки
Добавлено: 02 июн 2021, 20:27
Известное дело, что C++ string конструируются из C char* простым string(s), или даже автоматическим вызовом конструктора...
А вот вопрос, если вы перед вызовом string(s) не проверяете char* s на равенство NULL?
Проверяем:
Вот так!
Проверяйте char* на NULL!
А вот вопрос, если вы перед вызовом string(s) не проверяете char* s на равенство NULL?
Проверяем:
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/strnull$ cat nullstr.cc
#include <iostream>
#include <string>
int main()
{
const char* n = NULL;
std::string sn(n);
std::cout << sn << std::endl;
}
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/strnull$ g++ -Wall -pedantic -std=c++2a nullstr.cc -o nullstr
Код: Выделить всё
olej@R420:~/2021/OWN_TEST.codes/strnull$ ./nullstr
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
Аварийный останов (стек памяти сброшен на диск)
Проверяйте char* на NULL!