【发布时间】:2023-04-02 13:58:01
【问题描述】:
我想我很清楚 delete 和 delete [] 之间的区别。我在这里要问的问题是:有时我确实有错字并使用了错误的。然后它可能会崩溃,也可能不会崩溃,通常会花费数小时的调试时间。
我希望 gcc 能够在一些最简单的情况下检测并警告可能的误用。 由于需要调用遗留函数,我仍然需要不时使用“new float[size]”,所以我更感兴趣的是找到一个错误检查工具来捕捉这些错误的一部分。
【问题讨论】:
-
您不需要使用
new float[size]。使用std:array<float>或std::vector<float>。 -
一个工具:不要使用
new[]。有vector(几乎在任何情况下)。 -
在可执行文件上使用 valgrind
-
另外,您也不需要使用
new。使用std::make_shared -
感谢所有宝贵的建议。 Valgrind 对我来说太慢了(程序可能会运行数小时才能在优化模式下找到有问题的代码,然后使用调试模式的 valgrind 将它放几天……通常慢 100 倍——而不是慢 10 倍!)我会避免新的 [ ] 建议。
标签: c++ vector delete-operator scalar