Reputation: 65
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) );
Upvotes: 4
Views: 431
Reputation: 3057
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;
}
}
Upvotes: -1
Reputation: 78943
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.
Upvotes: 6