取消分配动态分配的字符数组的析构函数
Destructor that deallocate dynamically allocated char array
我需要写一个析构函数来释放char数组,但我总是收到这样的错误消息"释放的指针没有分配"。看起来我不止一次删除了这个位置,所以我试图检查char指针是否为NULL,但它仍然不起作用。请帮忙。注意:house对象是另一个类的成员数据。
class House {
private:
char * location;
public:
House();
~House();
House::House() {
location = NULL
}
int House::create_house(char init_location[100]) {
location = new char [strlen(init_location) + 1];
strcpy(location, init_location);
return 1;
}
House::~House() {
if (location) {
delete [] location;
location = NULL;
}
}
编辑:我添加了构造函数和函数来显示我的位置是如何分配的。
释放的指针未分配
在您显示的代码中,您确实没有分配任何内容。location
只是一个指针,没有什么可以删除的。只能在指向通过new
访问的实例的指针上调用delete
。
使用std::string
,忘记new
和delete
,把时间花在重要的事情上。
在此期间,这个问题已被编辑。发布的代码仍然缺少复制错误所需的部分,由于我不确定到底遗漏了什么,唯一需要添加的是,您很可能违反了0/3/5规则。上面提到的错误原因仍然相同:您正在尝试delete
什么都没有的东西(或者已经删除的东西(。我的建议仍然是一样的:使用std::string
。
相关文章:
- 如何在析构函数中删除C++中动态分配的数组?
- 为什么数组中对象的析构函数在被另一个对象替换时不被调用?
- C++ 在析构函数调用之前删除的动态成员数组
- 取消分配动态分配的字符数组的析构函数
- 在C++中删除指针数组时析构函数崩溃
- 为什么我不能使用已删除或私有析构函数分配类的数组?
- 如何对动态数组中的某些对象调用析构函数
- 为什么析构函数和复制构造函数使用对象数组显示此行为
- 这是删除析构函数中的数组的正确方法吗?
- 指向数组的指针的析构函数
- 具有受保护析构函数的类数组的动态分配
- 析构函数立即调用并删除我的数组
- 为什么析构函数不释放数组内存?
- 如何在具有指向对象的指针数组的类中创建复制构造函数和析构函数,其中对象本身具有指向整数的指针数组
- 析构函数删除在 main 中声明的动态数组
- 删除类数组而不调用析构函数
- 构造函数、析构函数和指针(以及向量、数组和删除等等)
- C++析构函数删除包含动态数组作为数据成员的对象时的用法
- C++动态数组析构函数错误
- c++字符串数组析构函数