13得票6回答
如果新的大小比原来小,能否使用realloc移动指针?

我想知道C或C++标准是否保证当realloc调用一个比原指针尺寸小的非零值时,指针不会被更改: size_t n=1000; T*ptr=(T*)malloc(n*sizeof(T)); //<--do something useful (that won't touch/reall...

7得票2回答
C标准库中的realloc如何实现?

我找不到任何关于 realloc 函数的源代码,而它似乎违反了 C 语言的一个基本规则:它不需要知道要重新分配内存的长度。 在不知道原始内存长度的情况下如何重新分配内存? 我该如何自己实现这个函数?

12得票5回答
在结构体内部分配数组和结构体的内存空间

如何在一个结构体中动态分配另一个结构体?我还想动态分配结构体内的项目数组,需要在需要时重新分配该数组,应该如何正确实现?请举例说明如何声明结构体并进行上述操作。我对这些事情的顺序有些不确定。在释放结构体本身之前,结构体内的数组是否应该被释放? 在创建结构体时必须分配结构体,然后分配/声明其各个...

8得票2回答
可以使用realloc安全地重新分配平凡可复制对象的存储空间吗?

我知道平凡可复制对象可以安全地通过malloc复制到适当的存储位置1,目标对象将与源对象具有相同的值。 使用realloc是否也可能呢?也就是说,如果realloc一些包含类型T的对象的存储空间,并且realloc决定移动和复制该块,那么新分配的存储空间中的对象是否完好无损并已开始其生命周期...

12得票6回答
使用realloc(X, 0)替代free(),并使用字符串长度+1来调用malloc函数

这次我不太知道该怎么起标题。首先,我想说我在本页面上看到了一些关于如果问题与"作业"有关就需要警告的评论。我的问题确实是关于作业的,但已经完成了,我只是想更好地理解代码运行原理。 我已经阅读了一些帖子和书籍,但我认为我仍然缺少一些东西。 我在我写的代码中有2行代码不是很理解。这个作业是关于...

9得票2回答
alloca()函数分配的内存能否重新分配?

malloc分配的内存可以使用realloc重新分配。那么对于alloca来说有类似的函数吗?重新分配堆栈内存可能在您不希望在堆中分配内存并且需要多次分配变量堆栈内存的情况下非常有用,例如在库函数中,您需要动态内存,但又不想在堆上分配,因为库的用户可能使用自定义的堆分配策略。 int mai...

10得票4回答
总是建议使用std::vector而不是realloc公平吗?

来自Bjarne Stroustrup's FAQ: 如果你感觉需要使用realloc() - 很多人都这样认为 - 那么请考虑使用标准库的vector。 我想先声明一下,std::vector有很多优点,个人而言我总是会选择使用它而不是用C内存分配写动态数组。 但是,std::ve...

20得票5回答
当realloc移动内存块时如何更新其他指针?

realloc函数可能会将内存块移动到新的位置,此时返回新的位置。那么这是否意味着如果我这样做:void foo() { void* ptr = malloc( 1024 ); unsigned char* cptr = ( unsigned char* )...

16得票7回答
释放已分配内存:realloc() vs. free()

我使用malloc()分配了一块内存,然后用realloc()修改了它。 在代码的某个点上,我想要清空它,也就是说,将其内存大小设置为0。直觉上,这可以通过realloc(pointer, 0)来完成。但我在这里阅读到,这是由具体实现决定的,不应该使用。 那么我应该使用free()来释放内...

30得票8回答
realloc和memcpy是如何工作的?

我有两个问题。 realloc() 和 memcpy() 是否以比逐个元素迭代更快的方式复制数组中的条目( O(N))?如果是,则你认为它的复杂度是什么? 如果分配的大小小于原始大小,realloc() 是否会将条目复制到其他位置,还是只是将它们保留在原地并减小数组的大小?