2

我想我很清楚删除和删除[]之间的区别。我在这里问的问题是:有时我确实有错字并使用了错误的。然后它可能会或可能不会崩溃,通常会以数小时的调试结束。

我希望 gcc 能够在一些最简单的情况下检测并警告可能的误用。由于需要调用遗留函数,我仍然需要不时使用“new float[size]”,所以我更感兴趣的是找到一个错误检查工具来捕捉这些错误的一部分。

4

2 回答 2

4

我希望 gcc 能够在一些最简单的情况下检测到可能的误用并发出警告。

使用valgrind

由于需要调用的遗留函数,我仍然需要new float[size]不时使用

不,你没有。如果遗留函数需要一个指向浮点数组的第一个元素的指针,请执行以下操作:

std::vector<float> numbers(10);
legacy_func(&numbers[0]);

不要这样做:

float *numbers = new float[10];
legacy_func(numbers);
delete[] numbers;
于 2012-08-16T22:09:35.063 回答
0

您可以将您的浮点数放入 a 中std::vector<float>,然后将其传递front()&front()那些遗留函数。我不确定这是否能保证按标准工作,但它应该在常见的实现中工作。

如果你有 C++11 库支持并且size在编译时是已知的,std::array<float, size>效率会更高。

于 2012-08-16T21:59:03.747 回答