如题,我知道realloc以后,新分配的内存,内容会从原来的内容拷贝过来。
但是有一个问题:
原来的内存被c-runtime回收了? 被操作系统回收了?--恐怕只能作为一个很小的内存碎块什么用也没有吧。 还是干脆泄漏了? 请dx给各明确的说明和解释吧!
谢谢!!!!
---------------------
附上测试程序
#include
需要将数据中的某些字节删除,相应地需要释放fg所占用的内存。比如将"asdfghjkl"中的"fg"删除,并返回"asdhjkl"。我用下面的code来完成。
#include
alloca,malloc,realloc...哪些是在堆内存中的? 他们的不同依赖于win或*nix平台吗? 我在钱能的书上看见他们都是分配堆内存。 而在cu的论坛上看见一些文章只说alloca分配的对内存而其他的不是。 请问谁能帮解释一下??
内存分配malloc, realloc等函数有两种工作方式:小块分配模式和大块模式
前者从低端开始忘高分,用brk.
后者从高往低分,不用brk.
在我的机器上128K是大模式,128K以下是小模式。大模式时候,brk不变,分配的内存在brk数值上方。
brk在大模式下不变。处于非常小的原始数值。
编译该测试程序,
./a.out 127
./a.out 130
分别看结果。
[CODE]
#include
如果realloc的大小比原先分配的小,是怎么处理的,会不会释放掉部分资源。。 比如: char *s = malloc(10); s = realloc(s, 4); 后面的6个字节会不会被释放呢?
[code]
#include
请问 realloc 或者 malloc 在什么情况下执行时出现 segment fault 错误, 在线等。。。 现在我的程序在执行这条语句时出现了 segment fault 错误,请问大侠如何排除。。。。。 谢谢!!
正学到《C和指针》中关于动态内存分配的部分,对于realloc有点不明白。 书中有这样的代码: ...... array = realloc(array, new_size); ...... 我疑惑的是,如果这句代码执行失败(也就是向操作系统申请内存不成功)的话,那array原来所指向的那块内存里的数据是否也丢失了?如果是的话,实际编程中该怎样避免数据丢失这个问题呢? 另外,realloc失败后,原来的array所指向的内存是否释放了呢?会不会造成内存泄漏? [ 本帖最后由...
1. realloc失败的时候,返回NULL 2. realloc失败的时候,原来的内存不改变,也就是不free或不move,(这个地方很容易出错) 3. 假如原来的内存后面还有足够多剩余内存的话,realloc的内存=原来的内存+剩余内存,realloc还是返回原来内存的地址; 假如原来的内存后面没有足够多剩余内存的话,realloc将申请新的内存,然后把原来的内存数据拷贝到新内存里,原来的内存将被free掉,realloc返回新内存的地址 各位,如果觉得有哪些不对的地...
假如有一块动态缓存由ptr所指,大小为10bytes,假如调用ptr=realloc(ptr, 8000);内存不够重新分配8000bytes,这时realloc返回NULL,还是以前的那个20bytes的地址?