双指针可以同时使用malloc / free和new / delete吗?

时间:2016-01-22 00:41:09

标签: c++

我想知道我是否有一个类"对象"然后我想制作一个ObjectList - Object ** p_obj。然后我可以malloc / free for p_obj和new / delete for p_obj [i]?

类似的东西:

    p_obj = (Object**) malloc(sizeof(Object*) * count_obj)
    p_obj[0] = new Object();

并使用delete和free在析构函数中释放它们; 如果可以,那么它可能会引起什么样的潜在问题?

提前致谢。

2 个答案:

答案 0 :(得分:5)

虽然这在技术上并非错误"但它肯定违背了C ++范例。

您最终遇到的最大问题是您自己和其他任何必须维护代码的人会产生混淆。

作为一般规则,请在C ++中使用new / delete代替malloc / free。对于奖励积分,使用智能指针,绝不直接处理对象分配或取消分配。

答案 1 :(得分:0)

从技术上讲,这是合法的,但你为什么要这样做呢?使用new代替所有内容。

  

它可能造成哪些潜在问题?

无意中使用了错误的释放。 只是正确完成动态内存处理并不容易。如果你会增加复杂性......