gpt4 book ai didi

C++ 应用程序在删除时崩溃

转载 作者:行者123 更新时间:2023-11-27 23:06:08 27 4
gpt4 key购买 nike

我有一个用 C++ 编写的相当复杂的应用程序。我有一个名为 OrderBook 的类。我需要动态创建一个 OrderBook 对象数组,所以我所做的是,

OrderBook* pOrderBooks; // In header file

在运行时,我将数组创建为

p_OrderBooks = new OrderBook[n]; // n is an integer initialized at run time

程序运行良好。但是当我尝试删除数组时(因为我需要创建一个由 pOrderBooks 指向的新数组),程序崩溃了。这就是我删除它的方式。

delete[] p_OrderBooks;

我已经确定崩溃正是由于那条线而发生的。所以我目前正在做的是在不删除之前分配的内存的情况下重新初始化指针。

//delete[] p_OrderBooks; // <- crash happens here
p_OrderBooks = new OrderBook[k]; // for some 'k'

但这很糟糕,因为会发生内存泄漏。我想知道如何在重新指向新数组之前正确释放内存。

最佳答案

您正在分配 p_OrderBooks 但正在删除 pOrderBooks

如果这只是您帖子中的一个简单拼写错误,那么您很可能超出了此数组的边界,写入超过开头​​或结尾的元素,因此损坏了堆,因此当您尝试删除它时它会崩溃。

关于C++ 应用程序在删除时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23409975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com