malloc()
,calloc()
,realloc()
およびfree()
の独自のバージョンを、標準の関数名を再定義することでテスト用に提供できます。 gccで
、私は、交換機能
gcc -c myfunctions.c -omyfunctions.o
を持つオブジェクトファイルを作成し、交換
gcc myfunctions.o -Dmalloc=mymalloc -Dcalloc=mycalloc -Drealloc=myrealloc -Dfree=myfree testfile.c
の代わりに、どのような学生にredefinitonとのリンクを使用してテストファイルをコンパイルしたいですuse
gcc testfile.c
my*()
functioの実装nsはあまりにも難しいはずがありません。基本的には、パラメータをチェックして元の関数を呼び出します。
/* myfunctions.c */
#include <stdlib.h>
void *mymalloc(size_t s) {
/* test s */
return malloc(s);
}
void *mycalloc(size_t n, size_t s) {
/* test n and s */
return calloc(n, s);
}
void *myrealloc(void *p, size_t s) {
/* test p and s */
return realloc(p, s);
}
void myfree(void *p) {
/* test p */
free(p);
}
出典
2011-07-07 22:28:46
pmg
「malloc」の独自の実装を提供し、それにリンクさせますか?またはvalgrindを通じてコードを実行しますか? – jamesdlin
あなたが何を求めているのか分かりません。それが正しくmallocされているかどうかをチェックするように、各生徒の課題にコードの行を入れたいですか? –
[ここでmallocをラップするためのカップルのメソッド](http://stackoverflow.com/questions/262439/create-a-wrapper-function-for-malloc-and-free-in-c) – jspcal