相关疑难解决方法(0)

删除void指针是否安全?

假设我有以下代码:

void* my_alloc (size_t size)
{
   return new char [size];
}

void my_free (void* ptr)
{
   delete [] ptr;
}
Run Code Online (Sandbox Code Playgroud)

这样安全吗?或者必须在删除前ptr进行投射char*

c++ memory-management casting void-pointers

88
推荐指数
9
解决办法
5万
查看次数

在C++中删除不完整类型不是错误时是否存在实际情况?

当应用于指向不完整类型的指针时,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

3
推荐指数
1
解决办法
258
查看次数

C++编程 - 这种分配是不可避免的内存泄漏吗?

我对粘贴的代码有疑问.我为int分配了内存并删除了(像往常一样).但在某处,我看到这个sysntax(第1行)分配了一个匿名的int空间.如何释放这个空间,这不是内存泄漏的结果吗?

main(){
  int *p = new int;
  new int;

  if(p)
   delete p;
  system("PAUSE");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

0
推荐指数
1
解决办法
136
查看次数