K.Maebashi's BBS 投稿フォーム
ハンドル名
件名
Link
>・realloc関数についての質問(p238 List 4-4 realloc.c) > realloc関数の呼び出しは13行目 > > variable_array = realloc(variable_array, sizeof(int) * size); > >realloc関数について man command で調べたところ(準拠 C89 C99)、返り値の項で >「realloc関数は新たに割り当てられたメモリーへのポインタを返す。これはあらゆる組み込み型に対応できるようにアラインメントされており、ptrとは異なることもある。」と説明されています。 > >man command のrealloc関数の書式は以下の通り。 > void *realloc(void *ptr, size_t size); > >List 4-4 realloc.cの17~19行目のfor文のブロックでsscanf関数によってヒープ領域にストアした値をprintf関数により、variable_array[i]という形で参照しています。これは実際には *(variable_array + i) という形に読み替えられていると思います。 ただ、上記のmanコマンドの返り値の項で記述されている「ptrとは異なることもある」が実際に起こった場合、List 4-4 におけるptrつまりvariable_arrayが指し示すメモリアドレスが一定ではなくなると思うので、そのメモリアドレスを起点にしてアクセスする >*(variable_array + i)は上手く目的の値をとってくることが、できないのではないでしょうか。 > >拙い文ではありますが、何卒よろしくお願いします。 > >今まだ4章の途中ですが、本当にたくさんのことも学ぶことができています。 >自身の環境で実験をしながら試行錯誤ができ、とてもおもしろいです。 >本を書いてくださりありがとうございました。
spamよけのため、ここに「ほげぴよ」と入力してください。
削除パスワード :
クリック!