C言語なら俺に聞け(入門篇) Part 5
■ このスレッドは過去ログ倉庫に格納されています
0710デフォルトの名無しさん
2006/12/22(金) 00:04:43メモリ上に配列としてロードしたくてreallocを使おうと思ったのですが
(mallocしてreallocで領域を拡張しまくる)
reallocがうまく動きません
たとえば、
char *str = (char *)malloc(sizeof(char) * 8);
str = "foo";
printf("%s\n", str);
str = (char *)realloc(str, sizeof(char) * 16);
str = "foobarbaz";
printf("%s\n", str);
↓
fatalerror - called with threadlist_ix -1
Hangup
となってしまいます…gdbで調べたらSIGSEGVとかで
セグメンテーションフォールトのようです
質問1:reallocの使い方はこれで合っていますか?(環境はCygwin + gccです)
質問2:プログラムの最初において
大きさのわからないファイルを全部メモリ上にロードしておいて、
実行終了までfreeする可能性が全く無い場合、
しかもメモリ上には配列で持っておきたい場合に
reallocで領域を拡張するほかに
良い方法があればご教授いただけませんか?
以前mallocの実装を習ったときに聞いた
sbrkというシステムコールが使えそうなんですが…
以上二点、教えてください。お願いします。
■ このスレッドは過去ログ倉庫に格納されています