malloc
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2008/12/05(金) 16:26:490002デフォルトの名無しさん
2008/12/05(金) 16:29:54言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
0003デフォルトの名無しさん
2008/12/05(金) 23:45:440004デフォルトの名無しさん
2008/12/05(金) 23:53:510005デフォルトの名無しさん
2008/12/06(土) 08:25:00calloc
alloca
0006デフォルトの名無しさん
2008/12/06(土) 13:38:000007デフォルトの名無しさん
2008/12/06(土) 17:04:320008デフォルトの名無しさん
2008/12/06(土) 17:16:440009デフォルトの名無しさん
2008/12/06(土) 18:12:50LocalAlloc
0010デフォルトの名無しさん
2008/12/06(土) 18:44:330011デフォルトの名無しさん
2008/12/06(土) 19:17:20|丶、 ;;; __;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_,,: ィ";;_|
ト、;;;;;;;;;;;;;;;` ` '' ー -- ‐ '' ";;;;;;;;;,:ィ;:;!
,';:``' ‐ョ 、 ,_ ;;;;;;;;;;;;;;;;;;;;;;;;;;; , - '"l;:;:;:;:l
l;:;:;:;:;:;:;ミ ` ` '' ー -‐ '" ,リ;:;:;:l
l;:;:;:;:;:;:;:ゝ く三) (三シ `ヾ;:t、
fミ{;:;:;:;:f'´ , -−-_,, _,ィ 、_,,ィ,.-−、 };f }
l トl;:;:;:;:l 、,ィ或tュ、゙:ミ {,'ィt或アチ l:l,/
゙i,tヾ:;:;:! `ヽ 二ノ ト ` ‐''"´ l:l:f 麻呂
ヽ`ー};:l ,r'、 ヽ リ_)
`"^l:l ,/゙ー、 ,r'ヽ l
゙i ,ノ `'" 丶. ,'
゙l、 ′ ,, ィrェェzュ、,_ 〉 } /
',ヽ ヘヾ'zェェェッ',シ' //ヽ
} 丶、 ` ー--‐ '"'´,/ノ:.:.:ヽ
/l 丶、 ,.イ:.:.:.:.:.:.:.:丶、、
,r'"^l ! ` ー‐;オ´:.:.:.:.:.:.:.:.:.,ノ ,}、
,. -ァ=く(:.:.:.l l //:.:.:.:.:.:., - '" ,/ ヽ、
, - '"´ / ,/`>'t、_」___,ィ'゙,ィ,.: -‐ '" ,. -‐ '" \
/ ヽ-( / / f }li, ,. -‐ '" \
0012デフォルトの名無しさん
2008/12/06(土) 19:33:36http://jp.youtube.com/watch?v=BHYhESFajOM
に変換される。
0013デフォルトの名無しさん
2008/12/08(月) 11:45:20pp = malloc(10 * sizeof(int*));
for(i = 0; i < 10; i++) pp[i] = malloc(10 * sizeof(int));
/*これで pp はint pp[10][10]のような配列のように使える*/
for(i = 0; i < 10; i++) free(pp[i]);
free(pp);
0014デフォルトの名無しさん
2008/12/08(月) 12:00:40pp = (int**)malloc(10 * sizeof(int*));
pp[i] = (int*)malloc(10 * sizeof(int));
0015デフォルトの名無しさん
2008/12/08(月) 12:19:06malloc()の呼び出し回数が、int pp[m][n]としたときにm+1も掛かって効率が悪い。
二次元配列的に使う用途なら、二回呼び出しで済ませる実装で充分。
# その場合、一次元アクセスも可能なので尚好都合。
0016デフォルトの名無しさん
2008/12/08(月) 14:57:380017デフォルトの名無しさん
2008/12/08(月) 15:06:490018デフォルトの名無しさん
2008/12/08(月) 15:58:320019デフォルトの名無しさん
2008/12/08(月) 19:58:320020デフォルトの名無しさん
2008/12/09(火) 10:56:35pp = (int**)malloc(20 * sizeof(int*));
p = (int*)malloc(20 * 10 * sizeof(int));
for(i = 0; i < 20; i++) pp[i] = &p[i * 10];
/*これで pp はint pp[20][10]のような配列のように使える*/
free(p);
free(pp);
0021デフォルトの名無しさん
2008/12/09(火) 11:20:28pp = (int**)mallc(20 * sizeof(int*) + 20 * 10 * sizeof(int));
p = (int*)((char*)pp + 20 * sizeof(int*));
for(i = 0; i < 20; i++) pp[i] = &p[i * 10];
/*これで pp はint pp[20][10]のような配列のように使える*/
free(pp);
0022デフォルトの名無しさん
2008/12/09(火) 11:21:430023デフォルトの名無しさん
2008/12/09(火) 12:52:120024デフォルトの名無しさん
2008/12/09(火) 13:02:02int (*pp)[10] = (int (*)[10])malloc(20 * 10 * sizeof(int));
じゃ駄目なのかと。
0025デフォルトの名無しさん
2008/12/09(火) 13:13:45すげー
0026デフォルトの名無しさん
2008/12/09(火) 13:44:470027デフォルトの名無しさん
2008/12/09(火) 14:44:5085点が返ってくるより、「0点かも」と…
002824
2008/12/09(火) 17:04:33「何かしら事情があってそうなっている」可能性を無視してまで
俺様論をゴリ押しするほど傲岸不遜な人間じゃないもんで。
まあタマに皮肉を含めることはあるけども。
0029デフォルトの名無しさん
2008/12/09(火) 18:32:510030デフォルトの名無しさん
2008/12/09(火) 20:03:270031デフォルトの名無しさん
2008/12/09(火) 23:04:200032デフォルトの名無しさん
2008/12/09(火) 23:35:25near char *s = (char *)malloc(sizeof(char) * LENGTH);
char s2[LENGTH];
s == s2
free(s);
003315
2008/12/09(火) 23:51:49>20相当のコードは割かし書くけど、>21も中々いいね。
>>24
>29の理由で今一つ。そうでないならシンプルでいいね。
# 例えば、どうせ動的に変えないパラメータなのに可変にしないと気が済まない客がいたりしてね……
0034デフォルトの名無しさん
2008/12/10(水) 01:43:11皮肉っぽいからキモチワルイんだよ。
0035デフォルトの名無しさん
2008/12/10(水) 05:26:16お前らの書くプログラムなんかで何時間も動かし続ける奴は無いんだから、
freeの必要無し。プロセス終了時にOSが全部処理してくれる。
0036デフォルトの名無しさん
2008/12/10(水) 10:12:56清々しい皮肉なんて、皮肉として成立してないだろ。
(書いてて思ったが、「皮肉」って文字が
気持ち悪くなってきた。皮と肉だぜ?)
0037デフォルトの名無しさん
2008/12/10(水) 18:12:22皮肉とは、欠点や弱点を意地悪く遠まわしに非難すること。
皮肉の語源・由来
皮肉は、中国禅宗の達磨大師の「皮肉骨髄(ひにくこつずい)」が語源で、元は仏教用語。
「皮肉骨髄」とは、「我が皮を得たり」「我が肉を得たり」「我が骨を得たり」「我が髄を得たり」と、大師が弟子たちの修行を評価した言葉である。
骨や髄は「要点」や「心の底」の喩えで「本質の理解」を意味し、皮や肉は表面にあることから「本質を理解していない」といった非難の言葉であった。
そこから、皮肉だけが批評の言葉として残り、欠点などを非難する意味で使われるようになった。
0038デフォルトの名無しさん
2008/12/10(水) 18:28:04「〜じゃだけなのかと。」
語尾が変わるだけでも、ずいぶん印象が違うね。
後者の方が皮肉っぽくてキモチワルイ。
おまい、ケンカ売ってるのか?
0039デフォルトの名無しさん
2008/12/10(水) 18:31:500040デフォルトの名無しさん
2008/12/10(水) 18:43:40「〜じゃだめなのかと。」
誤字訂正しとく。ツッコミ入れられる前に。
0041デフォルトの名無しさん
2008/12/11(木) 16:08:57しねーよ禿
0042デフォルトの名無しさん
2008/12/11(木) 21:46:080043デフォルトの名無しさん
2008/12/11(木) 21:58:26Windows限定で。
0044デフォルトの名無しさん
2008/12/11(木) 22:08:480045デフォルトの名無しさん
2008/12/11(木) 22:12:060046デフォルトの名無しさん
2008/12/11(木) 22:19:32プロセス空間ごと消滅するだけで。
0047デフォルトの名無しさん
2008/12/11(木) 22:25:350048デフォルトの名無しさん
2008/12/11(木) 22:26:30これでOK?
0049デフォルトの名無しさん
2008/12/11(木) 22:32:270050デフォルトの名無しさん
2008/12/11(木) 22:34:120051デフォルトの名無しさん
2008/12/11(木) 22:49:23mallocしたら絶対freeしろよ、おまいら。
35 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/10(水) 05:26:16
>31
お前らの書くプログラムなんかで何時間も動かし続ける奴は無いんだから、
freeの必要無し。プロセス終了時にOSが全部処理してくれる。
46 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/11(木) 22:19:32
少なくともwindowsで勝手にfreeしてくれるなんて事はない。
プロセス空間ごと消滅するだけで。
>>46 は頭悪すぎるぞw
0052デフォルトの名無しさん
2008/12/11(木) 23:01:32freeを呼び出す事によるパフォーマンスダウンやエンバグの可能性も無視出来ない。
malloc()よりfree()の方が重い環境も少なくない。
0053デフォルトの名無しさん
2008/12/11(木) 23:12:050054デフォルトの名無しさん
2008/12/12(金) 00:43:46どこかにfjのmalloc論争ヲチスレがあったような気がするが、
一番最後の論争はいつ頃だったんだろうな。
0055デフォルトの名無しさん
2008/12/12(金) 02:04:48昔見た事があるような気がする。
niftyのC言語フォーラムでも。
今じゃ、ガベコレ様が良きに計らってくださるので、一般庶民は論争する気も起きないか。
0056デフォルトの名無しさん
2008/12/12(金) 02:07:470057デフォルトの名無しさん
2008/12/12(金) 02:14:42if (a == 1) か論争なら・・・
0058デフォルトの名無しさん
2008/12/12(金) 02:17:25……いや、無かったかも。
0059デフォルトの名無しさん
2008/12/12(金) 11:30:44RegisterClassしたら最後にUnregisterClassしとけよみんな
0060デフォルトの名無しさん
2008/12/12(金) 11:52:45そのネタはたまに出てくるけど、いまいち盛り上がらん。
0061デフォルトの名無しさん
2008/12/12(金) 11:55:29関数型やるとその辺の疑問が氷解するよ
0062デフォルトの名無しさん
2008/12/12(金) 14:39:200063デフォルトの名無しさん
2008/12/12(金) 22:02:490064デフォルトの名無しさん
2008/12/13(土) 00:40:060065デフォルトの名無しさん
2008/12/13(土) 01:20:280066デフォルトの名無しさん
2008/12/13(土) 01:23:590067デフォルトの名無しさん
2008/12/13(土) 01:24:39人感センサーつきのオート便座なら勝手に閉じてしまうし、
暖房便座はエコの観点から下げておくべきだ。
# 勿論、蓋がある場合だが。
0068デフォルトの名無しさん
2008/12/13(土) 01:32:27プロセス終了時にOSが全部処理してくれる。
0069デフォルトの名無しさん
2008/12/13(土) 01:50:03ないか…
0070デフォルトの名無しさん
2008/12/13(土) 02:09:34malloc free 論争
なんかでヤフれ
0071デフォルトの名無しさん
2008/12/13(土) 02:43:20確実にfreeしろとは言わないけどしなくていいと言うのもあれだよな。
0072デフォルトの名無しさん
2008/12/13(土) 02:51:28僕らは生まれた
Windows しか知らずに
僕らは育った
僕らの名前を 覚えて欲しい
Windows しか知らない
クソ プログラマーさ
0073デフォルトの名無しさん
2008/12/13(土) 03:17:05そのうちに鬱で自殺するタイプ。
0074デフォルトの名無しさん
2008/12/13(土) 03:24:390075デフォルトの名無しさん
2008/12/13(土) 05:35:150076デフォルトの名無しさん
2008/12/13(土) 06:04:36そんな弱気じゃ、fjに参加出来ませんよ。
0077デフォルトの名無しさん
2008/12/13(土) 07:27:580078デフォルトの名無しさん
2008/12/13(土) 09:49:000079名無し募集中。。。
2008/12/13(土) 09:58:39むしろ主張したいときこそ名乗れよw
0080デフォルトの名無しさん
2008/12/13(土) 10:43:310081デフォルトの名無しさん
2008/12/13(土) 10:51:190082デフォルトの名無しさん
2008/12/13(土) 12:49:40freeしない奴のデスクって仕様書とゴミの山で埋まってそうな感じ
0083デフォルトの名無しさん
2008/12/21(日) 16:32:420084デフォルトの名無しさん
2008/12/21(日) 17:02:180085デフォルトの名無しさん
2008/12/21(日) 17:31:000086デフォルトの名無しさん
2008/12/21(日) 17:31:310087デフォルトの名無しさん
2008/12/21(日) 17:35:290088デフォルトの名無しさん
2008/12/21(日) 17:35:340089名無し募集中。。。
2008/12/21(日) 17:57:30き〜っと〜何年経〜っても〜
0090デフォルトの名無しさん
2008/12/28(日) 06:15:190091デフォルトの名無しさん
2008/12/28(日) 06:46:29連続した物理アドレスじゃないのってプロセス側からはどうやっても判別不可能なの?
0092デフォルトの名無しさん
2008/12/28(日) 07:24:12ゲンコツ食らわしたい
0093デフォルトの名無しさん
2008/12/28(日) 08:30:460094デフォルトの名無しさん
2008/12/28(日) 09:31:47そんなこと言う人いるんだww
0095デフォルトの名無しさん
2008/12/28(日) 09:36:59そんなレスしかできないんだww
0096デフォルトの名無しさん
2008/12/28(日) 10:20:29>mallocってどういう仕組みになってるの?
ソース嫁。
>連続した物理アドレスじゃない
かどうかはどうでもよくて
>プロセス側からはどうやっても判別不可能なの?
Cの標準ライブラリでは提供されてないが
OSのAPI呼び出しで提供されてるかも知れない。環境次第。
0097デフォルトの名無しさん
2008/12/28(日) 10:23:59代表的な環境であるwindowsとmacではどうなっていますか?
0098デフォルトの名無しさん
2008/12/28(日) 10:29:24Mac は知らんが、Win には int _CrtIsValidHeapPointer(void *) がある。
但し _DEBUG 付きでビルドしたときのみ。
まあ、C ってのは「ヒープに限らず
リソースは自分で管理しろ」ってスタンスだからなあ。
0099デフォルトの名無しさん
2008/12/28(日) 10:59:24>指定されたポインタがローカル ヒープにあることを検査します (デバッグ バージョンだけ)。
これは連続性は全く関係なさそうだけどw
’物理的に’連続したものが欲しい時は結局ドライバ回りのコードに頼るしかなさそうだね。
0100デフォルトの名無しさん
2008/12/28(日) 11:07:550101デフォルトの名無しさん
2008/12/28(日) 11:12:29Macのどこが代表的なんだ?
0102デフォルトの名無しさん
2008/12/29(月) 00:00:370103デフォルトの名無しさん
2008/12/30(火) 23:37:11streamtuner
0104デフォルトの名無しさん
2009/01/03(土) 04:13:110105デフォルトの名無しさん
2009/01/03(土) 04:35:13free()に渡すのは識別子ではなくポインタの値で、
0106デフォルトの名無しさん
2009/01/03(土) 13:05:170107デフォルトの名無しさん
2009/01/03(土) 13:25:380108デフォルトの名無しさん
2009/01/03(土) 14:02:59リンク時にシンボルのstripできないじゃないか。
0109デフォルトの名無しさん
2009/01/03(土) 22:58:500110デフォルトの名無しさん
2009/05/29(金) 22:06:410111デフォルトの名無しさん
2009/06/04(木) 21:03:150112デフォルトの名無しさん
2009/06/05(金) 00:53:000113デフォルトの名無しさん
2009/06/07(日) 18:52:240114デフォルトの名無しさん
2009/06/08(月) 02:54:030115デフォルトの名無しさん
2009/06/09(火) 17:26:420116デフォルトの名無しさん
2009/06/10(水) 07:24:480117デフォルトの名無しさん
2009/06/10(水) 13:22:570118デフォルトの名無しさん
2009/06/10(水) 15:36:240119デフォルトの名無しさん
2009/07/12(日) 16:41:410120デフォルトの名無しさん
2009/12/04(金) 07:44:500121デフォルトの名無しさん
2009/12/08(火) 22:11:00p = null;
*p = 0xFF;
0122デフォルトの名無しさん
2009/12/08(火) 23:54:060123デフォルトの名無しさん
2009/12/23(水) 10:16:410124デフォルトの名無しさん
2009/12/23(水) 15:01:150125デフォルトの名無しさん
2009/12/23(水) 15:24:45当然のように条件コンパイルやextern "C"を使うのも玄人
malloc()の戻り値をキャストするなというのはド素人
0126デフォルトの名無しさん
2009/12/23(水) 15:26:55int* p;と書くかint *p;と書くかの違いくらいどうでもいい。
0127デフォルトの名無しさん
2010/01/11(月) 10:12:270128デフォルトの名無しさん
2010/01/11(月) 11:27:220129デフォルトの名無しさん
2010/01/16(土) 20:54:360130デフォルトの名無しさん
2010/01/16(土) 20:55:53メモリがほしいならnewをしろ
0131デフォルトの名無しさん
2010/01/17(日) 04:26:390132デフォルトの名無しさん
2010/01/17(日) 04:44:200133デフォルトの名無しさん
2010/01/17(日) 06:23:200134デフォルトの名無しさん
2010/01/17(日) 12:20:36どうせなにやってもその後まともに動作しないんだから
アロケートのエラー取得なんてやらなくていいんだよ。
0135デフォルトの名無しさん
2010/01/17(日) 15:20:530136デフォルトの名無しさん
2010/01/18(月) 00:13:380137デフォルトの名無しさん
2010/01/18(月) 01:15:560138デフォルトの名無しさん
2010/01/18(月) 10:59:050139デフォルトの名無しさん
2010/01/18(月) 14:46:32malloc(1024*1024*1024*1024*1024) なんて与えてNULLが
帰ってきた時に、何もせずに終了ってのモナ
昔は「論外、ご冗談を。無視します」で許されたかもしれない
が、今はそんな巨大なメモリ取得出来ませんって程度のメッセー
ジは欲しいところ。
0140デフォルトの名無しさん
2010/01/18(月) 14:52:000141デフォルトの名無しさん
2010/01/18(月) 14:53:25↑
神話。
今やUNIXコンソールアプリとかでも、mallocはプロセス管理やシステムコール領域とは独立分離されているので、プロセスが本当に何も
出来なくなるクリティカルな状況よりずっと低いレベルでNULLが
返ってくるように設定されている。よってエラー処理ルーチンは
必要。
>>132
秀逸杉る。
0143デフォルトの名無しさん
2010/01/18(月) 18:54:09出来の悪い架空記憶を採用したOSでは
p=malloc(1024*1024*1024*2)としても
平気で普通の値を返してくる。
ところが p[1024*1024*1024*2-1]='¥0'
とした瞬間、ディスクがガシャガシャ動き出し
サクサク動いていたマシンのマウスが殆ど
動かなくなったり、ちょっと昔の奴だと
ブルースクリーンになってリセットボタン
すら利かない状態になったりしたものだが...
今は仮想記憶だから大丈夫だよね。
0144デフォルトの名無しさん
2010/01/19(火) 03:26:53失敗する可能性あるからリソースから文字列取得するなよ、っていうのがリファレンスに載ってるから
そういう危機的な状況でもMB_SYSTEMMODALを指定すれば頑張って表示してくれるんじゃないのか?
と思ってるんだけど、実際そういうテストやったことないから正直よく分からん
0145デフォルトの名無しさん
2010/01/19(火) 15:14:120146デフォルトの名無しさん
2010/01/19(火) 22:39:130147デフォルトの名無しさん
2010/01/23(土) 19:52:350148デフォルトの名無しさん
2010/03/20(土) 08:23:59たった2GBでスワップとかどんな罰ゲームなんだよw と思っていた。
でも実際、Windows用のアーカイバーで間抜けのがあるらしく、2GBのtar.gzを
メモリ上に展開しようとしてスワップ地獄に陥ってしまった。
なんでgnuzip展開とtar展開を全部オンメモリでやろうとするかね。
0149デフォルトの名無しさん
2010/03/21(日) 10:06:28Mac OS Xがそうだったなぁ。
しかもswapを動的に確保するから、ディスクの空きが少ない状況でこれが起きると
にっちもさっちもいかなくなった。
0150デフォルトの名無しさん
2010/04/22(木) 05:17:190151デフォルトの名無しさん
2011/02/22(火) 01:43:22.780152デフォルトの名無しさん
2011/04/08(金) 21:15:00.180153デフォルトの名無しさん
2011/04/28(木) 20:17:14.71大量に確保するとパソコンこわれるぞ!!
2GB確保したらパソコン死にかけたぞ!!
使うときはOSとメモリを新しくしよう!!
0154天使 ◆uL5esZLBSE
2011/07/02(土) 07:05:04.01> にっちもさっちもいかなくなった。
ハッアアアアアアア????????
ゴミの分際でw
ゴミの分際でw
0155天使 ◆uL5esZLBSE
2011/07/02(土) 22:10:58.80<<<<<<< Mac OS Xがそうだったなぁ。 >>>>>>>(きリッッッッ!!!!キリッッッ!!キリ!!キリッッッ!!!!!!!
--------(キリッッ!!!キリッッッ!きリ!!!
----------------
<<<<<<< しかもswapを動的に確保するから、ディスクの空きが少ない状況でこれが起きると >>>>>>>(キリキリ!!!キリ!!!ッ!
----------(きリッッ!!!!キリッ!!!キリッッッッッ!!キリッ!!キリッッッッ!
--------
<<<<< にっちもさっちもいかなくなった。 >>>>>(キリッッッッキリッ!!
---(キリッ
お前らはほんとにゴミだな
0156デフォルトの名無しさん
2011/07/02(土) 22:57:43.940157デフォルトの名無しさん
2011/11/22(火) 01:37:17.320158デフォルトの名無しさん
2012/01/12(木) 01:44:14.29http://news.nicovideo.jp/watch/nw176439
はい、freeを忘れた結果こうなりましたよっと
0159デフォルトの名無しさん
2012/01/12(木) 12:23:32.850160デフォルトの名無しさん
2012/01/12(木) 20:18:21.05もはやCとC++のソース互換なんてないのに
ソース互換を気にする人って・・・
■ このスレッドは過去ログ倉庫に格納されています