int * p1 = (int *)malloc(100 * sizeof(int));
int * p2;
for(int i = 0;i < 100;i++)
p1[i] = i;
p2 = (int *)realloc(p1,200 * sizeof(int));打个不恰当的比方:假设内从严重不足,p1所在的原来的内存块不能足够容纳200个连续的空闲单元,那么系统就会重新申请一个足够200个单元的连续空间,并把之前100个值复制到新空间的地方,然后返回新空间的地址。
那么问题来了,我们传的是p1指针,指针是不带‘100’这个信息的,如何实现复制不多不少100个值呢?求解,谢谢!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
那free(p1)的时候如何知道去 释放100 * sizeof(int) 大小的内存呢? 可见这个 100 是存了的.
一个很朴素的做法是, 分配 101 sizeof(int) 大小的内存p, p[0] 放入 内存大小(100), p1 = &p[1]; return p1;.