Как инициализировать динамический массив так, чтобы не было разыменования пустого указателя?

К примеру, вот код. Выскакивает предупреждение, мозолит глаза, а возможно я не ведаю об страшных опасностях, которые этот код может за собой повлечь.

int size = 5;
int* tmp = (int*)malloc(sizeof(int) * size);
for (int i = 0; i < size; i++)
{
    tmp[i] = i; // Здесь выскакивает предупреждение
}

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

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

Например,

int size = 5;
int* tmp = (int*)malloc(sizeof(int) * size);
assert(tmp); 
for (int i = 0; i < size; i++)

или

int size = 5;
int* tmp = (int*)malloc(sizeof(int) * size);
if (tmp) {
    for (int i = 0; i < size; i++)

Словом, обеспечьте проверку того, что malloc и в самом деле выделил вам запрошенные 20 байт памяти.

→ Ссылка