gpt4 book ai didi

c++ - 如何释放数组的 N 个元素的内存

转载 作者:行者123 更新时间:2023-11-30 00:52:35 25 4
gpt4 key购买 nike

the program from 2004相关我正在修复。前开发人员使用以下代码在析构函数中释放数组的“len”个元素:

unsigned int* _data;  
...
if (_data) {
int len = size();
delete (unsigned int[len]) _data;
}

我无法用我的编译器编译这段代码。错误信息是:

error: ISO C++ forbids casting to an array type ‘unsigned int [(((unsigned int)(((int)l) + -0x00000000000000001)) + 1)]’

肯定有他没有使用delete _data;我应该如何解决这个错误的原因?
谢谢。

最佳答案

How should I fix this error?

去掉类型转换,寻找_data的地方已分配。

  • 如果它被分配为new [someLength] , 替换为 delete[] _data;
  • 否则(尽管不太可能)替换为 delete _data .

从长远来看,最好使用动态容器,例如 std::vector<unsigned int> , 到基元数组的动态分配。不过,我知道这可能超出了您当前重构的范围。

关于c++ - 如何释放数组的 N 个元素的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752439/

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