我想我清楚删除和删除[]之间的区别。我在这里问的问题是:有时我确实有拼写错误并使用了错误的拼写错误。然后它可能会或可能不会崩溃,通常会花费数小时的调试时间。
我希望gcc可以在一些最简单的案例中检测并警告可能的误用。 由于我需要调用遗留函数,我仍然不得不经常使用“new float [size]”,因此我更感兴趣的是找到一个错误检查工具来捕获部分错误。
答案 0 :(得分: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;
答案 1 :(得分:0)
您可以将自己的花车放在std::vector<float>
中,然后将front()
或&front()
传递给这些旧功能。我不确定这是否符合标准,但它应该在常见的实现中工作。
如果您拥有C ++ 11库支持并且在编译时已知size
,则std::array<float, size>
将更有效。