在c中多次对同一变量进行mallocing



我可以在一个循环中多次对同一个变量进行malloc吗?它会得到一个新的内存地址吗?

int* var;
int i;
for(i = 0; i < 5; i++)
{
var = (int*)malloc(sizeof(int));
}

这是否分配了一个新的空间,这不是我实际使用它的方式,我会在地址被重新分配到链表的情况下使用,这样它就可以被释放,不会导致内存地址。

是的,只要在重新分配之前对变量进行处理,这就可以了。"做点什么"的意思是:在重新分配指针之前先复制指针,然后再调用free。

我可以在一个循环中多次对同一个变量进行malloc吗?它会得到一个新的内存地址吗?

malloc分配一个大小字节的内存块,并返回一个指向该块开头的指针。因此,在这个for循环中:

for(i = 0; i < 5; i++)
{
var = (int*)malloc(sizeof(int));
}

在每次迭代中,malloc都会分配一个新的内存块,并返回一个指向该块开头的指针,该指针将被分配给var变量。但您在问题中提到了-">地址将被重新分配到链表中。"因此,假设您将分配的内存引用保留在某个位置。

这和这个一样好:

int somevalue;
for(i = 0; i < 5; i++)
{
somevalue = i+10; //Just assigning a value to variable
}

在每次迭代中,都会为somevalue变量分配一个新值。循环结束后,变量somevalue将具有在循环的最后一次迭代中分配的值。

这是否分配了一个新空间。。

是,只要malloc成功。


附加说明:

不要强制转换malloc返回。检查一下。

所以,你应该:

for(i = 0; i < 5; i++)
{
var = malloc(sizeof(int));
}

相关内容

  • 没有找到相关文章

最新更新