社区
C语言
帖子详情
使用断言检查内存是否分配成功是危险的,为什么呢?
iamlwblwblwb
2012-01-20 11:58:33
看C与C指针是,说“使用断言检查内存是否分配成功是危险的”,请各位指点为什么呢?谢谢!
...全文
182
7
打赏
收藏
使用断言检查内存是否分配成功是危险的,为什么呢?
看C与C指针是,说“使用断言检查内存是否分配成功是危险的”,请各位指点为什么呢?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jackyjkchen
2012-01-20
打赏
举报
回复
个人觉得无论是业务逻辑还是通用库,都不用检查指针有效性
第一,即便检查你也只能检查空指针等少数几个特殊值,任意值的野指针检查不了
第二,如果你总是犯这种内存管理上的错误(频率超过一个月3次),对不起,您不适合使用C语言
zhq445078388
2012-01-20
打赏
举报
回复
因为正式发布版是去掉断言的。。。那些是用于调试输出的。。
飞天御剑流
2012-01-20
打赏
举报
回复
因为断言一般在release版本中会被去掉,这时候就没有检查作用了。
AnYidan
2012-01-20
打赏
举报
回复
[Quote=引用 1 楼 supermegaboy 的回复:]
因为断言一般在release版本中会被去掉,这时候就没有检查作用了。
[/Quote]
++
iamlwblwblwb
2012-01-20
打赏
举报
回复
感谢以上几位,受教了,谢谢
游戏设计师
2012-01-20
打赏
举报
回复
一般断言是在DEBUG中调试用的,不过你可以自己写一个异常监控和查找库,在release版本中使用~
一般把这种类似断言的检测出现问题时候抛出异常或者写入log~
内存
管理清晰版
对于这种情况,正确的做法是在
使用
指针之前
检查
指针
是否
为 NULL,或者在函数参数中
使用
assert 进行
断言
检查
。 其次是
内存
分配
成功
但未初始化就
使用
。
内存
的默认值是不确定的,不是所有的
内存
初始值都为零。因此,...
代码审查九句真言-pdf
- **核心思想**:确保所有通过`malloc`等动态
分配
的
内存
,在不再需要时都能够被正确地释放。这有助于避免
内存
泄漏。 - **实践建议**: - 遇到`malloc`时
检查
其后的代码,确保每个可能的执行路径都有相应的`free`...
CC++嵌入式面试大全.pdf
5. 动态
内存
分配
:试题4展示了动态
内存
分配
的
使用
,但`GetMemory()`函数内的`malloc()`
分配
的
内存
并没有被正确地赋值给`Test()`函数中的`str`指针,因此`strcpy()`会尝试在未
分配
的
内存
上写入,导致未定义行为。...
高质量C++编程指南
- **
断言
使用
**:合理
使用
断言
检查
函数预设条件,提高程序的健壮性。 - **引用与指针比较**:引用提供了一种安全且简便的方法来表示对象的别名,而指针则更为灵活但也更
危险
。 #### 7.
内存
管理 - **
内存
分配
方式**...
C语言
70,026
社区成员
243,262
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章