与我正在修复的2004 年程序相关。前开发人员使用以下代码在析构函数中释放数组的“len”元素:
unsigned int* _data;
...
if (_data) {
int len = size();
delete (unsigned int[len]) _data;
}
Run Code Online (Sandbox Code Playgroud)
我无法用我的编译器编译这段代码。错误信息是:
错误:ISO C++ 禁止转换为数组类型 'unsigned int [(((unsigned int)(((int)l) + -0x00000000000000001)) + 1)]'
一定有他不使用的原因delete _data;我应该如何解决这个错误?
谢谢。
我应该如何解决这个错误?
删除演员表,并寻找_data已分配的地方。
new [someLength],则替换为delete[] _data;delete _data.从长远来看,最好使用动态容器,例如std::vector<unsigned int>,而不是动态分配原语数组。不过,我知道这可能超出了您当前重构的范围。
| 归档时间: |
|
| 查看次数: |
1086 次 |
| 最近记录: |