作者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
推 wowtiger:free(ptr) 不會更動到ptr值吧 192.83.183.52 06/13 20:31
推 wlsabcd:的確不會更動到ptr值 203.70.105.176 06/13 20:35