C等价的C++ delete [](char*)

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)

Jam*_*lis 6

在C中,你没有new; 你只需要malloc(); 释放通过调用获得的内存malloc(),free()被称为.

那就是说,为什么你会(char*)在传递之前投出一个指针delete?这几乎肯定是错误的:传递给的指针delete必须与创建的类型相同new(或者,如果它具有类类型,则具有虚拟析构函数的基类).