Я с интересом прочитал сообщение C разница между malloc и calloc. Я использую 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
Если я использую calloc вместо malloc, тогда у меня будет:
Scenario2
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
У меня есть три вопроса:
-
Какой из сценариев более эффективен, если массивы очень большие?
-
Какой из сценариев будет более эффективным с точки зрения времени, если массивы очень большие?
-
В обоих сценариях я просто пишу для массивов в том смысле, что для любой заданной итерации в цикле for я записываю каждый массив последовательно от первого элемента до последнего элемента. Важный вопрос: если я использую malloc, как в сценарии 1, то необходимо ли инициализировать элементы до нуля? Скажем с malloc, у меня есть массив z = [garbage1, garbage2, garbage 3]. Для каждой итерации я пишу элементы последовательно, то есть в первой итерации я получаю z = [some_result, garbage2, garbage3], во второй итерации, которую я получаю на первой итерации, я получаю z = [some_result, another_result, garbage3] и так on, то нужно ли мне специально инициализировать мои массивы после malloc?