假设我有以下代码:
void* my_alloc (size_t size)
{
   return new char [size];
}
void my_free (void* ptr)
{
   delete [] ptr;
}
这样安全吗?或者必须在删除前ptr进行投射char*?
当应用于指向不完整类型的指针时,Visual C++会出现C4150警告delete.
根据标准,此类案件会产生不确定的行为.在Visual C++中的AFAIK,它们导致默认operator delete()函数,并且不会调用析构函数,这会导致许多错误.
现在我可以用#prarma warning( error : 4150 )Visual C++将该警告视为错误.我想有一些原因是为什么它是一个警告而不是默认情况下在Visual C++中的错误.
我想在哪些现实代码中允许这样的情况?为什么我不将该警告切换为编译器错误?
c++ compiler-construction compiler-warnings visual-c++ delete-operator
我对粘贴的代码有疑问.我为int分配了内存并删除了(像往常一样).但在某处,我看到这个sysntax(第1行)分配了一个匿名的int空间.如何释放这个空间,这不是内存泄漏的结果吗?
main(){
  int *p = new int;
  new int;
  if(p)
   delete p;
  system("PAUSE");
  return 0;
}