我可以在不同的重定向上混合使用 new 和 malloc 吗?

Can I mix new and malloc on different redirection?

提问人:Sreeraj Chundayil 提问时间:8/2/2021 更新时间:8/16/2021 访问量:106

问:

这种行为是未定义的,我混合了两者?newmalloc

int main()
{
  int ***arr = new int**[1];
  arr[0] = static_cast<int**>(malloc(sizeof(int**)));
  arr[0][0] = new int; 
  arr[0][0][0] = 1;

  //now, release memory using appropriate operator
}
C++ malloc 新运算符

评论

0赞 Aykhan Hagverdili 8/2/2021
你为什么要这样做呢?
0赞 Sreeraj Chundayil 8/2/2021
只是假设。在读一本书时,我有这个想法。
1赞 Sam Varshavchik 8/2/2021
不,这不是未定义的行为。但这是一个有争议的问题。首先,现代 C++ 很少需要任何东西。容器将正确地为您分配所有内存,而无需担心内存泄漏。newmalloc
0赞 Sreeraj Chundayil 8/2/2021
我不认为这与重复的问题完全相同。在重复中使用的变量是不同的。

答:

4赞 Aykhan Hagverdili 8/2/2021 #1

是的,你可以这样做。您必须致电 ,并相应地稍后调用。小心不要释放你从等那里得到的东西。delete[]deletefreemallocdelete

1赞 eerorika 8/2/2021 #2

这种行为是不确定的,我混合了新的和恶意的?

示例中没有 UB。

你可以这样做,但没有好处。