メモリ管理

メモリの取得と解放

<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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。