gpt4 book ai didi

c++ - 删除cpp中的一个指针和new运算符

转载 作者:太空宇宙 更新时间:2023-11-04 15:01:46 24 4
gpt4 key购买 nike

只有在使用 new 时我才可以删除指针吗?我试过这样的代码:

std::vector<float>* intersections;

intersections=&KIN_Trigonometry::getIntersectionCircleAndLine( xA, yA, xB, yB, x, y, radius * 2, nbPoints);

delete intersections;

它给我断言失败...我在使用 new like 时已经使用了带指针的 delete

int* p = new int[2];
delete p;

感谢您的支持

最佳答案

对于您的示例代码 int* p = new int[2]; delete p;,你创建了一个新的数组,所以你应该使用delete[]而不是delete

参见 cplusplus 引用:operator delete[]

同时,我知道你问的是上面的代码块。由于您没有使用 operator new 分配对象,因此您不应使用 operator deleteoperator delete[] 来释放它。那是你的问题。

很有可能,您可能想使用 free() 来释放这个对象,如果您要释放它的话。您需要检查代码或其文档以确定。

基于您正在获取函数返回值的地址这一事实,我认为您根本不应该自己解除分配。

关于c++ - 删除cpp中的一个指针和new运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34754200/

24 4 0
文章推荐: java - 这个 VenuesExplore 有什么问题吗?
文章推荐: javascript - 为 `