Original question
Can I use realloc()
function like the following code:
int *ptr, i, num=5;
for (i=0; i<num; i++)
void *nptr = realloc (ptr, (i+1) * sizeof(int) );
Original question
Can I use realloc()
function like the following code:
int *ptr, i, num=5;
for (i=0; i<num; i++)
void *nptr = realloc (ptr, (i+1) * sizeof(int) );
no, you should initialize ptr
at the beginning and then assign the new value
int *ptr = 0;
for (unsigned i=0; i<5; i++) {
void *nptr = realloc (ptr, (i+1) * sizeof(int) );
if (nptr) ptr = nptr;
else abort();
}
Otherwise at the first call you could pass some random value to realloc
. And the memory that you allocate in subsequent calls would simply be lost.
No, You should initialize pointer ptr
and nptr
with NULL. And declare nptr before for loop.
your code should be like:
#include<stdio.h>
#include<stdlib.h>
void main()
{
int *ptr=NULL, i, num=5;
void *nptr=NULL;
for (i=0; i<num; i++)
{
nptr = realloc (ptr, (i+1) * sizeof(int) );
if (NULL != nptr)
ptr = nptr;
}
}