標題: Re: [問題] assert用法
時間: Mon Apr 9 13:48:15 2007
※ 引述《ntouckcm (知足常樂)》之銘言:
: 請問各位高手怎麼用 assert 敘述測試 {記憶體錯誤檢查}
: 我有點看不太懂老師這樣說的意思!!!
按照標準說法,assert是一個MACRO,
#define assert(X) ....
他的用法是X是一個運算式,當此運算是結果為0 (NULL)時
assert會做以下幾件事:
從stderr印出以錯誤訊息,並呼叫abort() function來結束程式。
例如:
#include
#include
#include
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: 61.222.27.34
沒有留言:
張貼留言
您好.本資料庫並非第一手資料.如果你有對文章作者的詢問,意見與需求,請自行找尋文章作者並提供意見,謝謝.