Каждый раз, когда я выполняю это ... я получаю сообщение об ошибке:
char * var= new char[256];
var= "hola mundo\0";
delete var;
я получаю ошибку:
malloc: *** ошибка для объекта 0x10007fd20: освобождаемый указатель не был выделен
*** установить точку останова в malloc_error_break на
Я не хочу использовать std :: string или std :: vector ... потому что я использую в нескольких функциях char * в качестве параметра, и я хотел бы иметь возможность его уничтожить.
strcpy(var, "hola mundo");
вместо assign иdelete[] var;
вместоdelete
- person keltar   schedule 12.06.2014strcpy
илиstrncpy
,strcat
илиstrncat
'. - person Joe   schedule 12.06.2014std::string::c_str()
? - person The Paramagnetic Croissant   schedule 12.06.2014std::string::c_str()
возвращаемое значение -const char*
, его нельзя изменять (даже с const-cast, это нарушит внутреннюю структуру строк, такую как длина и емкость), поэтому это не всегда подстановочная замена. - person keltar   schedule 12.06.2014&str[0]
. Это можно изменить. - person The Paramagnetic Croissant   schedule 12.06.2014length()
после изменения строки? - person keltar   schedule 13.06.2014resize()
это сначала , только потом копируете. - person The Paramagnetic Croissant   schedule 13.06.2014