私は興味を持ってmallocとcallocのポストCの違いを読みました。コードでmallocを使用していますが、代わりにcallocを使用するとどのような違いがあるのか知りたいです。
mallocを使用した現在の(擬似)コード:
シナリオ1
int main()
{
allocate large arrays with malloc
INITIALIZE ALL ARRAY ELEMENTS TO ZERO
for loop //say 1000 times
do something and write results to arrays
end for loop
FREE ARRAYS with free command
} //end main
mallocの代わりにcallocを使用すると、次のようになります。
シナリオ2
int main()
{
for loop //say 1000 times
ALLOCATION OF ARRAYS WITH CALLOC
do something and write results to arrays
FREE ARRAYS with free command
end for loop
} //end main
私は3つの質問があります:
アレイが非常に大きい場合、どのシナリオがより効率的ですか?
アレイが非常に大きい場合、どのシナリオがより時間効率が高くなりますか?
どちらのシナリオでも、forループの任意の反復について、最初の要素から最後の要素まで順番に各配列を書き込んでいるという意味で、配列に書き込んでいます。重要な質問:シナリオ1のようにmallocを使用している場合、要素をゼロに初期化する必要がありますか?mallocで、配列z = [garbage1、garbage2、garbage3]があるとします。反復ごとに、要素を順番に書き込んでいます。つまり、最初の反復ではz = [some_result、garbage2、garbage3]を取得し、2番目の反復では最初の反復でz = [some_result、another_result、garbage3]を取得します。オンの場合、mallocの後にアレイを特に初期化する必要がありますか?