1 :
デフォルトの名無しさん:
amarok
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
3 :
デフォルトの名無しさん:2008/12/05(金) 23:45:44
めろっく
ファイアークリスタルの呪文で、こんな名前の奴なかったっけ?
malloc
calloc
alloca
何故にamarok
7 :
デフォルトの名無しさん:2008/12/06(土) 17:04:32
realloc
8 :
デフォルトの名無しさん:2008/12/06(土) 17:16:44
GC_malloc
9 :
デフォルトの名無しさん:2008/12/06(土) 18:12:50
GlobalAlloc
LocalAlloc
10 :
デフォルトの名無しさん:2008/12/06(土) 18:44:33
palloc
|;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ノ|
|丶、 ;;; __;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;_,,: ィ";;_|
ト、;;;;;;;;;;;;;;;` ` '' ー -- ‐ '' ";;;;;;;;;,:ィ;:;!
,';:``' ‐ョ 、 ,_ ;;;;;;;;;;;;;;;;;;;;;;;;;;; , - '"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, ,. -‐ '" \
12 :
デフォルトの名無しさん:2008/12/06(土) 19:33:36
13 :
デフォルトの名無しさん:2008/12/08(月) 11:45:20
int i, *p, **pp;
pp = 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);
14 :
デフォルトの名無しさん:2008/12/08(月) 12:00:40
キャストを忘れていた。ごめん
pp = (int**)malloc(10 * sizeof(int*));
pp[i] = (int*)malloc(10 * sizeof(int));
>>14 malloc()の呼び出し回数が、int pp[m][n]としたときにm+1も掛かって効率が悪い。
二次元配列的に使う用途なら、二回呼び出しで済ませる実装で充分。
# その場合、一次元アクセスも可能なので尚好都合。
mallocの返り値をcastするやつはばかです
C++だとキャストしないと代入さえできないのねん。
俺はamarokよりはxmms派だな
19 :
デフォルトの名無しさん:2008/12/08(月) 19:58:32
scmpx
20 :
デフォルトの名無しさん:2008/12/09(火) 10:56:35
int i, *p, **pp;
pp = (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);
21 :
デフォルトの名無しさん:2008/12/09(火) 11:20:28
int i, *p, *pp;
pp = (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);
22 :
デフォルトの名無しさん:2008/12/09(火) 11:21:43
さすがにこれはやりすぎか。
23 :
デフォルトの名無しさん:2008/12/09(火) 12:52:12
free要らない派登場
>>21 int (*pp)[10] = (int (*)[10])malloc(20 * 10 * sizeof(int));
じゃ駄目なのかと。
25 :
デフォルトの名無しさん:2008/12/09(火) 13:13:45
よく「~じゃ駄目なの」って書き方する人いるよね。よっぽど自分に自信が無いのかな。
27 :
デフォルトの名無しさん:2008/12/09(火) 14:44:50
テストの後に、「100だYO!」と宣言しておいて
85点が返ってくるより、「0点かも」と…
28 :
24:2008/12/09(火) 17:04:33
>>26 「何かしら事情があってそうなっている」可能性を無視してまで
俺様論をゴリ押しするほど傲岸不遜な人間じゃないもんで。
まあタマに皮肉を含めることはあるけども。
24だと定数式が必要になってしまうから駄目な事もあるだろうしな。
CFAQに載ってるような話題でいまさらよく盛り上がれるなお前ら
mallocしたら絶対freeしろよ、おまいら。
#define LENGTH 128
near char *s = (char *)malloc(sizeof(char) * LENGTH);
char s2[LENGTH];
s == s2
free(s);
33 :
15:2008/12/09(火) 23:51:49
>>21 >20相当のコードは割かし書くけど、>21も中々いいね。
>>24 >29の理由で今一つ。そうでないならシンプルでいいね。
# 例えば、どうせ動的に変えないパラメータなのに可変にしないと気が済まない客がいたりしてね……
>31
お前らの書くプログラムなんかで何時間も動かし続ける奴は無いんだから、
freeの必要無し。プロセス終了時にOSが全部処理してくれる。
>>34 清々しい皮肉なんて、皮肉として成立してないだろ。
(書いてて思ったが、「皮肉」って文字が
気持ち悪くなってきた。皮と肉だぜ?)
皮肉
皮肉とは、欠点や弱点を意地悪く遠まわしに非難すること。
皮肉の語源・由来
皮肉は、中国禅宗の達磨大師の「皮肉骨髄(ひにくこつずい)」が語源で、元は仏教用語。
「皮肉骨髄」とは、「我が皮を得たり」「我が肉を得たり」「我が骨を得たり」「我が髄を得たり」と、大師が弟子たちの修行を評価した言葉である。
骨や髄は「要点」や「心の底」の喩えで「本質の理解」を意味し、皮や肉は表面にあることから「本質を理解していない」といった非難の言葉であった。
そこから、皮肉だけが批評の言葉として残り、欠点などを非難する意味で使われるようになった。
「~じゃだめなの?」
「~じゃだけなのかと。」
語尾が変わるだけでも、ずいぶん印象が違うね。
後者の方が皮肉っぽくてキモチワルイ。
おまい、ケンカ売ってるのか?
2ちゃんねるで後者の場合、後ろに「小一時間問い詰めたい」が省略されているような気がするから困るw
「~じゃだめなの?」
「~じゃだめなのかと。」
誤字訂正しとく。ツッコミ入れられる前に。
41 :
デフォルトの名無しさん:2008/12/11(木) 16:08:57
プロセス終了時にOSが全部処理してくれる。
しねーよ禿
OSによりけりだよ >>Windows しかOSを知らない人
他のマイナーOSの事情をここで語っても無意味だから
Windows限定で。
そのWindowsに3.1/95/NT/Me は含まれているのでしょうか
現サポート製品に限られます
少なくともwindowsで勝手にfreeしてくれるなんて事はない。
プロセス空間ごと消滅するだけで。
なら問題ないじゃん
組込用OS以外では、プロセス空間ごと消滅するからfreeしなくていい
これでOK?
起動してすぐ終わるバッチ処理限定でね
再利用する間もなくさくっと終わるプログラムならいいんじゃね?
31 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/09(火) 23:04:20
mallocしたら絶対freeしろよ、おまいら。
35 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/10(水) 05:26:16
>31
お前らの書くプログラムなんかで何時間も動かし続ける奴は無いんだから、
freeの必要無し。プロセス終了時にOSが全部処理してくれる。
46 名前:デフォルトの名無しさん[sage] 投稿日:2008/12/11(木) 22:19:32
少なくともwindowsで勝手にfreeしてくれるなんて事はない。
プロセス空間ごと消滅するだけで。
>>46 は頭悪すぎるぞw
今時なら、最悪のケースを見積もって500MB以下に収まるなら、freeしなくていいだろう。
freeを呼び出す事によるパフォーマンスダウンやエンバグの可能性も無視出来ない。
malloc()よりfree()の方が重い環境も少なくない。
懐かしいなぁ。
どこかにfjのmalloc論争ヲチスレがあったような気がするが、
一番最後の論争はいつ頃だったんだろうな。
>54
昔見た事があるような気がする。
niftyのC言語フォーラムでも。
今じゃ、ガベコレ様が良きに計らってくださるので、一般庶民は論争する気も起きないか。
おれboolean論争なら参加してたよ
if (1 == a) か
if (a == 1) か論争なら・・・
return文に括弧をつけるか論争って無かったっけ?
……いや、無かったかも。
例えしなくてよいのだとしても、いちいち丁寧に解放するのが俺流
RegisterClassしたら最後にUnregisterClassしとけよみんな
>>58 そのネタはたまに出てくるけど、いまいち盛り上がらん。
またワケの判らんことを唐突に言い出す
>>61 が盛り上げてくれるそうだ。
結局、malloc/free論争は、どっちが勝ったの?
どっちが勝つも負けるもないよ。
「トイレを使った後、便座は上げておくべきか、下げておくべきか」 くらいつまらん。
malloc/freeを直接使う事はめったにない
それは答えがはっきりしている。
人感センサーつきのオート便座なら勝手に閉じてしまうし、
暖房便座はエコの観点から下げておくべきだ。
# 勿論、蓋がある場合だが。
人感センサーつきのオート便座なら勝手に閉じてしまう。
プロセス終了時にOSが全部処理してくれる。
これが新たな宗教戦争のテーマになったりして。
ないか…
newsgroupで一時期フィーバーしてたじゃない
malloc free 論争
なんかでヤフれ
freeに関して、OSが処理してくれると言うのはOS「依存」なんだよなぁ
確実にfreeしろとは言わないけどしなくていいと言うのもあれだよな。
Windows しか知らずに
僕らは生まれた
Windows しか知らずに
僕らは育った
僕らの名前を 覚えて欲しい
Windows しか知らない
クソ プログラマーさ
確実にfreeする奴は偏執狂。
そのうちに鬱で自殺するタイプ。
freeするもしないもその人次第だとは思うけど、こだわってとやかく言ってる
>>73も偏執者だと思うけどね。
環境や目的によってケースバイケースでどちらかが絶対的に正しいなんてことはないでしょ。
>75
そんな弱気じゃ、fjに参加出来ませんよ。
スラドへでも逝け
スラドってガキばっかじゃん
79 :
名無し募集中。。。:2008/12/13(土) 09:58:39
スラドの○○なのでACってのが意味解らん
むしろ主張したいときこそ名乗れよw
キモオタをむりやりnerd(笑)って言い張ってますよね
nerdはもともとそういう意味じゃないか?
freeしない奴の部屋って床が見えないくらいゴミが散乱してそうな感じ
freeしない奴のデスクって仕様書とゴミの山で埋まってそうな感じ
83 :
デフォルトの名無しさん:2008/12/21(日) 16:32:42
あ
い
し
て
ち
る
89 :
名無し募集中。。。:2008/12/21(日) 17:57:30
のサイン~
き~っと~何年経~っても~
90 :
デフォルトの名無しさん:2008/12/28(日) 06:15:19
a
91 :
デフォルトの名無しさん:2008/12/28(日) 06:46:29
mallocってどういう仕組みになってるの?
連続した物理アドレスじゃないのってプロセス側からはどうやっても判別不可能なの?
「Is not A not B ?」って聞かれるとイラッっとくるのは俺だけ?
ゲンコツ食らわしたい
93 :
デフォルトの名無しさん:2008/12/28(日) 08:30:46
英語通気取りですかw
94 :
デフォルトの名無しさん:2008/12/28(日) 09:31:47
てか
>>91 の質問がいまいちよく解らんのだが
>mallocってどういう仕組みになってるの?
ソース嫁。
>連続した物理アドレスじゃない
かどうかはどうでもよくて
>プロセス側からはどうやっても判別不可能なの?
Cの標準ライブラリでは提供されてないが
OSのAPI呼び出しで提供されてるかも知れない。環境次第。
97 :
デフォルトの名無しさん:2008/12/28(日) 10:23:59
>>96 代表的な環境であるwindowsとmacではどうなっていますか?
>>97 Mac は知らんが、Win には int _CrtIsValidHeapPointer(void *) がある。
但し _DEBUG 付きでビルドしたときのみ。
まあ、C ってのは「ヒープに限らず
リソースは自分で管理しろ」ってスタンスだからなあ。
>_CrtIsValidHeapPointer
>指定されたポインタがローカル ヒープにあることを検査します (デバッグ バージョンだけ)。
これは連続性は全く関係なさそうだけどw
’物理的に’連続したものが欲しい時は結局ドライバ回りのコードに頼るしかなさそうだね。
そもそも連続した物理メモリなんてハードからまなきゃ必要なかろう。
いっぱんむけ商用OSとしてじゃまいか
libgstreamer
streamtuner
104 :
デフォルトの名無しさん:2009/01/03(土) 04:13:11
freeに渡すのは 識別子 ではない(名言)
105 :
デフォルトの名無しさん:2009/01/03(土) 04:35:13
つまり、free()が受け取るのはポインタの値なんですね、わかります。
tcmalloc
識別子渡さなきゃいけないとなると
リンク時にシンボルのstripできないじゃないか。
なんであんなにぶったたかれてるのかまったくわからん
110 :
デフォルトの名無しさん:2009/05/29(金) 22:06:41
あ
な
る
ほ
|
115 :
デフォルトの名無しさん:2009/06/09(火) 17:26:42
ど
ざ
く
れ
ろ
120 :
デフォルトの名無しさん:2009/12/04(金) 07:44:50
あ
121 :
デフォルトの名無しさん:2009/12/08(火) 22:11:00
int* p;
p = null;
*p = 0xFF;
定期保守乙
123 :
デフォルトの名無しさん:2009/12/23(水) 10:16:41
mallocひどいお・・・
Cでmallocの戻り値をキャストするのは素人。
C言語で書いたあるライブラリのあるソースがあるC++のコンパイラでコンパイルされる可能性を考慮してmalloc()の戻り値をキャストするのは玄人
当然のように条件コンパイルやextern "C"を使うのも玄人
malloc()の戻り値をキャストするなというのはド素人
キャストするとかどうでもいいし。
int* p;と書くかint *p;と書くかの違いくらいどうでもいい。
127 :
デフォルトの名無しさん:2010/01/11(月) 10:12:27
超良スレ
128 :
デフォルトの名無しさん:2010/01/11(月) 11:27:22
さすがマロックだな
129 :
デフォルトの名無しさん:2010/01/16(土) 20:54:36
マロックを使えばメモリは俺の物
newすればするほどメモリはお前のものだ
メモリがほしいならnewをしろ
NULLを返されたらどうすればいいんですか><
死ねばいいとおもうよ。
abortなりassertなり
mallocやnewに失敗する状態の時は
どうせなにやってもその後まともに動作しないんだから
アロケートのエラー取得なんてやらなくていいんだよ。
ということにしたいのですね?
まあエラーダイアログくらいは出したいよね気分的に
ダイアログ出そうとしてさらにどつぼにはまるくらいなら逝ってよし
ダイアログを出すのに必要なメモリが確保できない
1ペタバイトとか取得要求して
malloc(1024*1024*1024*1024*1024) なんて与えてNULLが
帰ってきた時に、何もせずに終了ってのモナ
昔は「論外、ご冗談を。無視します」で許されたかもしれない
が、今はそんな巨大なメモリ取得出来ませんって程度のメッセー
ジは欲しいところ。
確かに debug 中はそれでもいいかもしれないが release 時にそのままじゃいかんだろ
mallocでNULLが返ってくる状況では、何をしてもダメ
↑
神話。
今やUNIXコンソールアプリとかでも、mallocはプロセス管理やシステムコール領域とは独立分離されているので、プロセスが本当に何も
出来なくなるクリティカルな状況よりずっと低いレベルでNULLが
返ってくるように設定されている。よってエラー処理ルーチンは
必要。
>>141 出来の悪い架空記憶を採用したOSでは
p=malloc(1024*1024*1024*2)としても
平気で普通の値を返してくる。
ところが p[1024*1024*1024*2-1]='¥0'
とした瞬間、ディスクがガシャガシャ動き出し
サクサク動いていたマシンのマウスが殆ど
動かなくなったり、ちょっと昔の奴だと
ブルースクリーンになってリセットボタン
すら利かない状態になったりしたものだが...
今は仮想記憶だから大丈夫だよね。
>>136の自分レス補足だけど、Win32の場合、システムモーダルメッセージボックスを作成するときに
失敗する可能性あるからリソースから文字列取得するなよ、っていうのがリファレンスに載ってるから
そういう危機的な状況でもMB_SYSTEMMODALを指定すれば頑張って表示してくれるんじゃないのか?
と思ってるんだけど、実際そういうテストやったことないから正直よく分からん
よく訓練されたPGならエラーダイアログくらい一番最初に確保しておくよね(´・ω・`)
Windowsのアホなところはそんなことをしても無駄だということだ
無駄無駄無駄、無駄な努力はしない
>>143 たった2GBでスワップとかどんな罰ゲームなんだよw と思っていた。
でも実際、Windows用のアーカイバーで間抜けのがあるらしく、2GBのtar.gzを
メモリ上に展開しようとしてスワップ地獄に陥ってしまった。
なんでgnuzip展開とtar展開を全部オンメモリでやろうとするかね。
>>143 Mac OS Xがそうだったなぁ。
しかもswapを動的に確保するから、ディスクの空きが少ない状況でこれが起きると
にっちもさっちもいかなくなった。
150 :
デフォルトの名無しさん:2010/04/22(木) 05:17:19
宇宙海賊キャプテンmalloc
わが青春の alloca ディア
152 :
デフォルトの名無しさん:2011/04/08(金) 21:15:00.18
あ
153 :
デフォルトの名無しさん:2011/04/28(木) 20:17:14.71
mallocを使うのはやめよう!!
大量に確保するとパソコンこわれるぞ!!
2GB確保したらパソコン死にかけたぞ!!
使うときはOSとメモリを新しくしよう!!
>>149 > にっちもさっちもいかなくなった。
ハッアアアアアアア????????
ゴミの分際でw
ゴミの分際でw
--------------
<<<<<<< Mac OS Xがそうだったなぁ。 >>>>>>>(きリッッッッ!!!!キリッッッ!!キリ!!キリッッッ!!!!!!!
--------(キリッッ!!!キリッッッ!きリ!!!
----------------
<<<<<<< しかもswapを動的に確保するから、ディスクの空きが少ない状況でこれが起きると >>>>>>>(キリキリ!!!キリ!!!ッ!
----------(きリッッ!!!!キリッ!!!キリッッッッッ!!キリッ!!キリッッッッ!
--------
<<<<< にっちもさっちもいかなくなった。 >>>>>(キリッッッッキリッ!!
---(キリッ
お前らはほんとにゴミだな
天使ちゃんマジ天使
157 :
デフォルトの名無しさん:2011/11/22(火) 01:37:17.32
...
158 :
デフォルトの名無しさん:2012/01/12(木) 01:44:14.29
ミスターmalloc
>>125 もはやCとC++のソース互換なんてないのに
ソース互換を気にする人って・・・