繁体   English   中英

在C中重新分配与malloc

[英]realloc vs malloc in C

我对C还是很陌生,现在刚开始涉足动态分配数组的领域。

我认为我主要是在malloc下工作,但是在realloc上有一些问题:

  1. 除了将内存空间添加到指针之外, realloc还能用于其他任何用途吗?
  2. size变量是否总是必须为int
  3. 像下面这样工作吗?

     float *L = NULL; int task_count = 5; L = (float*) realloc (L, task_count * sizeof(float)); 

如果我想进一步增加该空间(在这种情况下增加一倍),是否可以使用如下所示的内容?

L = (float*) realloc (L, 1 * sizeof(float));

似乎看似简单,但这告诉我我可能缺少某些东西。

如果ptr是空指针,则该函数的行为类似于malloc,分配一个新的大小为字节的块,并将指针返回其开头。

void * realloc (void* ptr, size_t size);

ptr-指向先前分配了malloc,calloc或realloc的内存块的指针。 或者,它可以是一个空指针,在这种情况下,将分配一个新块(就像调用了malloc一样)。

sizeNew-内存块的大小,以字节为单位。 size_t是无符号整数类型。

sizeNew必须定义您想要的整个内存,可以更小,也可以更大!

  1. 是的,您还可以减少内存空间
  2. 不,为什么呢? 它以void *作为第一个参数并返回void *
  3. 是的,但无需投射!

最后,您必须告诉函数总内存大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM