作者wlsabcd ()
看板Programming
标题Re: [问题] bug找不出来的时候大家会如何解决??
时间Wed Jun 13 20:02:51 2007
※ 引述《ggg12345 (ggg)》之铭言:
: : 下开发另一个部份,最後再对整体部份做整合测试
: 请教一下 assert 的用法与范例 !
: : ,我不是指原po,我看过太多人写程式都是一口气
<<吃掉一些>>
我也不是很行:
按照标准说法,assert是一个MACRO,
#define assert(X) ....
他的用法是X是一个运算式,当此运算是结果为0 (NULL)时
assert会做以下几件事:
从stderr印出以错误讯息,并呼叫abort() function来结束程式。
例如:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
void foo(int *q)
{
int *p;
assert(p = q);
printf("Checkking OK\n");
}
int main(void)
{
int *ptr = NULL;
ptr = (int *)malloc(sizeof(int));
/* ptr 有位址,可以正确执行 */
foo(ptr);
free(ptr);
/* ptr 位址不为NULL,虽然free掉但不为NULL,assert"不"会侦错到错误 */
foo(ptr);
ptr = NULL;
/* ptr 位址为NULL,assert会侦错到错误 */
foo(ptr);
return (0);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.70.105.176
1F:推 wowtiger:free(ptr) 不会更动到ptr值吧 192.83.183.52 06/13 20:31
2F:推 wlsabcd:的确不会更动到ptr值 203.70.105.176 06/13 20:35