私たちは[anyObject alloc]
が実際にCの関数malloc
とヒープに割り当てられたばかりのメモリを実装しているが、どこにも、このための答えを見つけることができませんでした。alloc、malloc、およびalloca - 違いは何ですか?
また、検索中のObjective-C(中alloc
呼び出すという印象の下にありましたalloc
のために、私は、スタック内のメモリを割り当てalloca
を見つけました。私は間違っていないよ場合は、alloc
は、オブジェクトを作成するために、ヒープにメモリを割り当てますので
、alloc
とmalloc
(とalloca
)の違いは何?誰がまとめてくださいすることができ?
"alloca()が適切な状況はほとんどありません。ほとんどの場合、malloc()を使ってメモリを割り当てるべきです。"すべての 'alloca()'は可変長配列を提供します。 int n = 6との間には実用的な違いはありません。 double x [n]; 'および' int n = 6;それだけでなく、マルチスレッドプログラムでの 'malloc()'の使用は、パフォーマンス上のボトルネックになる可能性があります。 –
私のクエリは、[[someObject alloc] init] 'を実装したObjective-Cという言葉のほうが多く、メモリを割り当ててオブジェクトをヒープに初期化しました。この '[someObject alloc]'は 'malloc'をバックグラウンドで実装していますか? –
@AndrewHenle私は、alloca()が適切な状況はないと言っていませんでした。私は彼らがまれであると言った。 VLAは有用である場合もありますが、基本的には最適化されています。 OPはCプログラミングのはっきりと新しくなったので、私は細部まで深く関わっていないことにしました。 :) – duskwuff