ChinaUnix.net
相关文章推荐:

realloc 减少内存

不知有没有用UNIX下pro*c的,有一指针定义为char **V; 然后用V=(char *) realloc(bind_dp->;V,bind_dp->;L+1);分配内存,总是coredump,不知为何?但定义为char *V[100];再V[1]=(char *) realloc(bind_dp->;V,bind_dp->;L+1);不会出错。请问各位大侠, 问题在什么地方——————入门小弟

by smartfish - C/C++ - 2003-07-15 15:16:21 阅读(951) 回复(3)

相关讨论

如题,我知道realloc以后,新分配的内存,内容会从原来的内容拷贝过来。 但是有一个问题: 原来的内存被c-runtime回收了? 被操作系统回收了?--恐怕只能作为一个很小的内存碎块什么用也没有吧。 还是干脆泄漏了? 请dx给各明确的说明和解释吧! 谢谢!!!! --------------------- 附上测试程序 #include #include int main(){ int i; int *pi=(int*)malloc(2*sizeof(int)); int *pic=pi; pi[0]=33; ...

by jeanlove - C/C++ - 2008-12-11 23:14:16 阅读(2355) 回复(9)

需要将数据中的某些字节删除,相应地需要释放fg所占用的内存。比如将"asdfghjkl"中的"fg"删除,并返回"asdhjkl"。我用下面的code来完成。 #include #include #include main() { char *p; p = malloc(10); strcpy (p, "asdfghjkl"); memmove(p+3, p+5, 5); p = realloc (p, 8); fprintf (stdout, "Str: %s\n", p); free(p); } 如何确定在调用了realloc之后,所分配的内存大...

by yacare - C/C++ - 2006-10-31 14:32:38 阅读(1220) 回复(1)

alloca,malloc,realloc...哪些是在堆内存中的? 他们的不同依赖于win或*nix平台吗? 我在钱能的书上看见他们都是分配堆内存。 而在cu的论坛上看见一些文章只说alloca分配的对内存而其他的不是。 请问谁能帮解释一下??

by wyezl - C/C++ - 2004-11-08 00:26:56 阅读(1050) 回复(3)

内存分配malloc, realloc等函数有两种工作方式:小块分配模式和大块模式 前者从低端开始忘高分,用brk. 后者从高往低分,不用brk. 在我的机器上128K是大模式,128K以下是小模式。大模式时候,brk不变,分配的内存在brk数值上方。 brk在大模式下不变。处于非常小的原始数值。 编译该测试程序, ./a.out 127 ./a.out 130 分别看结果。 [CODE] #include #include #include #include

by 思一克 - C/C++ - 2007-05-28 15:43:27 阅读(1301) 回复(5)

如果realloc的大小比原先分配的小,是怎么处理的,会不会释放掉部分资源。。 比如: char *s = malloc(10); s = realloc(s, 4); 后面的6个字节会不会被释放呢?

by maxxfire - C/C++ - 2012-08-02 14:35:44 阅读(1242) 回复(9)

[code] #include ; #include ; main() { char *p; p=(char *)malloc(100); if(p) printf("Memory Allocated at: %x",p); else printf("Not Enough Memory!\n"); getchar(); p=(char *)realloc(p,256); if(p) printf("Memory reallocated at: %x",p); else ...

by 天祥星辰 - C/C++ - 2004-05-29 17:34:52 阅读(501) 回复(1)

请问 realloc 或者 malloc 在什么情况下执行时出现 segment fault 错误, 在线等。。。 现在我的程序在执行这条语句时出现了 segment fault 错误,请问大侠如何排除。。。。。 谢谢!!

by zkyguanl - C/C++ - 2003-10-09 22:31:02 阅读(715) 回复(2)

正学到《C和指针》中关于动态内存分配的部分,对于realloc有点不明白。 书中有这样的代码: ...... array = realloc(array, new_size); ...... 我疑惑的是,如果这句代码执行失败(也就是向操作系统申请内存不成功)的话,那array原来所指向的那块内存里的数据是否也丢失了?如果是的话,实际编程中该怎样避免数据丢失这个问题呢? 另外,realloc失败后,原来的array所指向的内存是否释放了呢?会不会造成内存泄漏? [ 本帖最后由...

by ahocat - C/C++ - 2009-05-31 15:46:54 阅读(1767) 回复(8)

1. realloc失败的时候,返回NULL 2. realloc失败的时候,原来的内存不改变,也就是不free或不move,(这个地方很容易出错) 3. 假如原来的内存后面还有足够多剩余内存的话,realloc内存=原来的内存+剩余内存,realloc还是返回原来内存的地址; 假如原来的内存后面没有足够多剩余内存的话,realloc将申请新的内存,然后把原来的内存数据拷贝到新内存里,原来的内存将被free掉,realloc返回新内存的地址 各位,如果觉得有哪些不对的地...

by chenzhanyiczy - C/C++ - 2010-06-12 16:42:29 阅读(8691) 回复(10)

假如有一块动态缓存由ptr所指,大小为10bytes,假如调用ptr=realloc(ptr, 8000);内存不够重新分配8000bytes,这时realloc返回NULL,还是以前的那个20bytes的地址?

by mhello - C/C++ - 2007-07-13 10:29:03 阅读(1378) 回复(4)