inq*_*uam 1 c c++ free delete-operator
什么是C++的C等价物
delete[] (char *) foo->bar;
Run Code Online (Sandbox Code Playgroud)
编辑:我正在将一些C++代码转换为ANSI C.它有:
typedef struct keyvalue
{
char *key;
void *value;
struct keyvalue *next;
} keyvalue_rec;
// ...
for (
ptr = this->_properties->next, last = this->_properties;
ptr!=NULL;
last = ptr, ptr = ptr->next)
{
delete[] last->key;
delete[] (char *) last->value;
delete last;
}
Run Code Online (Sandbox Code Playgroud)
这会为C做吗?
free(last->key);
free(last->value);
free(last)
Run Code Online (Sandbox Code Playgroud)
在C中,你没有new; 你只需要malloc(); 释放通过调用获得的内存malloc(),free()被称为.
那就是说,为什么你会(char*)在传递之前投出一个指针delete?这几乎肯定是错误的:传递给的指针delete必须与创建的类型相同new(或者,如果它具有类类型,则具有虚拟析构函数的基类).