64,648
社区成员
发帖
与我相关
我的任务
分享
int *data=(int*)malloc(sizeof(int)*4);我申请了一个四个int 大小的内存
但是实际上我要存入6个int 大小?如何扩充改内存块,保证新的内存块内存地址是连续的?
for(int i=0;i<6;i++)
{
memcpy((int*)data+i,m,sizeof(int));
}
int *data=(int*)malloc(sizeof(int)*4);
1 .realloc(&data, sizeof(int)*6); // realloc函数重新分配内存大小
2 .重新分配,话说malloc每次都是一个页面一个页面的分配内存的,即使你申请的比较小的内存,第一次申请也是一个页面(4K的样子),第二次分配只要大小不超过4K,还是在第一次分配的那片内存上的,至于为什么没有连续,是因为每次malloc会额外分配出来一个字节保存对应free结束的标识符!
3 .