社区
C语言
帖子详情
debug版本中检测非法情况使用断言,在release版本中怎么办?
comdoc
2009-09-22 03:55:00
通常在debug版本中使用断言来避免程序中非法情况的出现,如空指针,非法参数等,但是在release版本中断言不起作用,那怎样才能保证程序(如函数)的健壮性呢?
看了一下标准C的memcpy函数,函数入口并没有对参数做检查,那如果传入空指针后程序崩溃,为什么要这样设计函数呢,干嘛不像debug版本一样检测一下输入参数呢?
...全文
88
2
打赏
收藏
debug版本中检测非法情况使用断言,在release版本中怎么办?
通常在debug版本中使用断言来避免程序中非法情况的出现,如空指针,非法参数等,但是在release版本中断言不起作用,那怎样才能保证程序(如函数)的健壮性呢? 看了一下标准C的memcpy函数,函数入口并没有对参数做检查,那如果传入空指针后程序崩溃,为什么要这样设计函数呢,干嘛不像debug版本一样检测一下输入参数呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
comdoc
2009-09-22
打赏
举报
回复
[Quote=引用 1 楼 candeabc123 的回复:]
只是为了调试方便 和提高程序健壮性
楼主不要太过于探究这种东西
如果你想使用memcpy函数 那你就应该确保参数的有效性啊 因为没有结果的返回啊 出错了怎么告诉你 ?
[/Quote]说的在理,这种情况应该由函数的使用者去避免传入非法参数
candeabc123
2009-09-22
打赏
举报
回复
只是为了调试方便 和提高程序健壮性
楼主不要太过于探究这种东西
如果你想使用memcpy函数 那你就应该确保参数的有效性啊 因为没有结果的返回啊 出错了怎么告诉你 ?
Debug
与
Release
版本
的区别详解
Debug
和
Release
并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把
Debug
和
Release
的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意
使用
VC已经定义好的名称。
Debug
版本
包括调试信息,所以要比
Release
版本
大很多(可...
编码笔记,
断言
,程序
版本
,
debug
和
release
断言
: 程序一般分为
debug
版本
和
release
版本
,
debug
版本
用于内部调试,
release
版本
用于发行给用户
使用
。
断言
assert时只在
debug
版本
中
起作用的宏,用于检查“不应该”发生的状况,运行
中
assert的参数如果为假,程序就会终止,一般还会出现提示对话,说明声明地方引发了assert。 例子: #define void func() { assert(true); assert(false && true); } 程序员可以吧assert看出是一个在任何系统状态下都可以
Release
和
Debug
版本
的区别
区别:一、
Debug
版本
包含调试信息,并且不作任何优化,编译器生成的代码便于程序员调试;
Release
版本
算是发布
版本
,
Release
下不能调试,生成的文件更小,编译器生成的程序速度更快。而且
Release
版本
进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地
使用
。二、
Debug
下生成的Exe文件在单独运行时需要编译器提供的一些库文件的支持,
Release
则是不需要的 。...
Debug
与
Release
版本
的区别
Debug
版本
包括调试信息,所以要比
Release
版本
大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则
Debug
和
Release
版本
对DLL的要求差不多。如果采用的编译选项为
使用
MFC动态库,则需要MFC42D.DLL等库支持,而
Release
版本
需要MFC42.DLL支持。
Release
不对源代码进行调试,不考虑MFC的诊断宏,
使用
的是MFC...
Debug
版本
和
Release
版本
区别及
ReLease
版调试
一.
Debug
版本
和
Release
版本
区别
Debug
通常称为调试
版本
,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release
称为发布
版本
,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地
使用
。
Debug
和
Release
的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,但区别并不重
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章