elk*_*epo 1 c++ null memory-management
在调用delete或delete []之前总是省略NULL指针检查是否安全,特别是在编写跨平台代码段时?
我记得几年前(三四个)我编写的相同代码正在使用MS Windows(使用MSVCv12工具链编译)但是使用g ++编译的Linux版本(遗憾的是,我不记得g ++版本)抛出了NULL指针引用.我发现当时可能是编译器错误的信息.
我已经找到了这个SO线程,但在阅读之后我仍然不太确定它是否安全,如果是这样 - 从哪个版本的C++标准?
是的,标准,因为C++ 98,保证delete或delete[]在nullpointer上没有效果.
C++98§5.3.5/ 2
"在任一替代方案中,如果操作数的值
delete是空指针,则操作无效.
在第一个标准之前,当语言由Annotated Reference Manual定义时,也是如此.
关于
"使用g ++为Linux编译的版本(遗憾的是,我不记得g ++版本)是抛出NULL指针引用
没有具体的,优选完整的再现行为的例子,这是不可能的.它与删除nullpointer无关.
| 归档时间: |
|
| 查看次数: |
1068 次 |
| 最近记录: |