当前位置: 代码迷 >> C语言 >> [讨论]realloc返回值问题
  详细解决方案

[讨论]realloc返回值问题

热度:473   发布时间:2005-09-10 10:24:00.0
[讨论]realloc返回值问题

int a[10]={1,2,3,4,5,6,7,8,9,0};
a=(int*)realloc(a,sizeof(int)*11);
请问一下这样可不可以?
如果可以,内存分配成功a为什么?
              内存分配不成功a又为什么?
如果分配了新的内存地址,数组a原来的值还有没有啊?
如果不可以,请指点,rezlloc()函数的返回值是什么???
搜索更多相关的解决方案: realloc  返回值  内存  int  

----------------解决方案--------------------------------------------------------
不可以。
因为静态数组的尺寸已经在使用前明确地被声明,且不能更改,该内存块是有限制的。
如你那样很容易导致程序崩溃。
你可以先使用 malloc 分配一块自由堆,然后再用 realloc 更改尺寸。

至于 realloc() 分配成功将返回该内存块指针(是一个远指针),失败(可能内存不足)则返回 NULL(空指针)。
----------------解决方案--------------------------------------------------------