Site hosted by Angelfire.com: Build your free website today!

文字列バッファを確保しる


256バイト分の領域を確保してみる↓
////////////////////////////////
  char *c;
  c=(char*)malloc(256); //256byte test

  if(c!=NULL) //succeed
  {
    printf("メモリが確保されたYO(・∀・)");
  }
  else     //failed
  {
    printf("メモリが足んねーよヴォケ!!(゚Д゚)");
  }

  free(c); //memory release
////////////////////////////////

これでも同じ↓
////////////////////////////////
  char *c=new char[256]; //256byte test

  if(c!=NULL) //succeed
  {
    printf("メモリが確保されたYO(・∀・)");
  }
  else     //failed
  {
    printf("メモリが足んねーよヴォケ!!(゚Д゚)");
  }

  delete[] c; //memory release
////////////////////////////////


後者のnew,deleteはc++で開発する時に用いる演算子で、
cでコンソールアプリを作る時は、前者のmallocを使います。

領域(この場合256byte)が確保されない状態でそのポインタに文字列を格納しようとした場合、
番地不明のポインタなので、そんな「何があるか分からん番地に文字列をぶっ込もう」ものなら
当然例外が発生してエライ事になります。
なので確保後のポインタの中身がNULL(未確保)でないかどうかを必ずチェックしましょう。

バイト数を指定する時,単に(256)等と数値を直接指定すると環境によってはアウトです。
sizeof(char)のようにchar型のサイズを調べてから確保させます。
つまりmalloc(sizeof(char)*256)のようにします。
(char型のサイズは必ずや1バイトとは限らないかもしれませんです)


次回の記事はまったくもって未定です。






というか次回更新があったとしてももうプログラム記事は中止です(´Д`