Можно ли очистить массив от мусора, но оставить его элементы пустыми?

Допустим, есть массивы:

 int * numArr1 = malloc (10*sizeof(int));
 int * numArr2[10];

Сейчас там мусор. Я могу очистить мои массивы от мусора, заполнив их нулями(или любыми числами) так:

 memset(numArr1, 0, 10*sizeof(int));
 memset(numArr2, 0, 10*sizeof(int));

или с помощью calloc:

 int * numArr1 = calloc (10*sizeof(int));
 int * numArr2 = calloc (10*sizeof(int));

Или в цикле, но все эти способы предполагают заполнение массивов какими-то значениями сразу. Есть ли в СИ способ просто выделить блок памяти под массив, но оставить его пустым? (ну или хотя бы заполнить какой-то специальной константой которая не влияла бы на вычисления).


Ответы (2 шт):

Автор решения: Mikhailo

У вас странное задание - "выделить блок памяти под массив, но оставить его пустым"

Что вы понимаете под "пустой"? Если вы выделили блок памяти - он уже не пустой, в нем всегда будут какие-то значения. Если вы хотите инициализировать массив нулевыми значениями - укажите это сразу:

int a[1000] = {}; 

или

int * a = new int[1000]{}; 
→ Ссылка
Автор решения: Alexey Ismagilov

Система лишь находит место в памяти, которое можно отдать под использование программе. Что там лежит — неважно. Задача функции выделения памяти — выделить память. У нее нет задачи заполнять чем—то этот кусок памяти. Все эти циклы для заполнения нулем или calloc это всё не на уровне системы, а уже на уровне программы. Как было сказано выше, что значит оставить его пустым?

→ Ссылка