Я пытаюсь динамически выделять новый объект.C++ Memory Allocation new [] и delete []
int len = (nm == NULL) ? 0 : strlen(nm);
try {
name = new char[len + 1];
}
catch(std::bad_alloc) {
name = NULL;
}
if(name) {
if(nm == NULL)
strcpy(name, "");
else
{
strcpy(name, nm);
cmds=new command [num_of_cmds];
Тогда мой деструктор имеет их удаление с помощью
robot::~robot()
{
if (name) {
delete[] name;
}
delete [] cmds;
}
Я постоянно получаю ошибки segementation, если я изменить код, чтобы инициализировать значение на простой междунаре, он ломается. Мое удаление [] cmds ломается, поэтому я должен прокомментировать это. Любая помощь будет принята с благодарностью. Я буду разъяснять больше вещей, если люди нуждаются.
Опубликовать небольшой самокомпилируемый пример, который демонстрирует вашу проблему. Заметьте, что, глядя на ваш код, есть много возможностей для его улучшения. Также этот пример, как и не будет компилироваться, я подозреваю, что это * код нет * оригинал * код. –
Я уверен, что видел этот код два дня назад. Http://stackoverflow.com/questions/10001614/c-vector-arrays-in-copy-constructors –
@amit: Хотя код совершенно катастрофический, я не знаю 'см. 'cmds' объявляется где угодно. Я вижу только его выделение, которое не указывает, является ли он членом или нет. –