メモリの取得と解放
<stdlib.h> malloc, free
動的取得と解放の基本形 allocate and free
#include <stdio.h>
・・・
char *mem;
mem = (char*) malloc( sizeof(char) * 100 ); // char 100個ぶん
if( mem == NULL ){
/* メモリ取得失敗 */
}
・・・
free(mem);
構造体の動的取得と解放
#include <stdio.h>
・・・
struct STR *obj;
obj = (struct STR*)malloc( sizeof(struct STR)); // STR 100個ぶん
if( obj == NULL ){
/* メモリ取得失敗 */
}
・・・
free(obj);
mallocで取得してないものを解放してみる
やっぱりセグメントエラー
int main()
{
char tako[20];
free(tako);
return 0;
}
次はだいぶヒヨった。
int main()
{
int *p;
free(p);
return 0;
}
free する前に、それがちゃんと malloc で取得されたものかどうかを判定する方法はなさそう。
別途フラグを用意して、malloc したらフラグをオンにする。GSLの行列の使い方。
最終更新:2010年01月07日 11:05