申请到的内存储器可以再次申请否
申请到的内存可以再次申请否
现有已经malloc到的内存6MB,在这6MB内存里我想再次申请2MB内存,行的通不,求解释清楚一些
------解决方案--------------------
当然不能。
你申请内存,系统为你开辟一段空间,由于你是动态申请的所以,空间在堆里面,实际上系统是把这一个地址区域归你使用,这6M的内存随你怎么玩。如果你再次调用申请2M,系统依旧会检查剩余的空闲堆空间(刚才那6M属于被使用状态),如果有,就一样道理,再为你申请新的地址空间。
------解决方案--------------------
可以的吧
------解决方案--------------------
那是不行的
除非用内存池进行管理
------解决方案--------------------
那是不行了, 你需要释放掉原来的6M内存, 再重新申请8M, 但是如果运气好, 正好6M后面有大于2M的连续空间的话, 可能正好再次申请到的是原来的6M空间和后面追加了2M空间,
现有已经malloc到的内存6MB,在这6MB内存里我想再次申请2MB内存,行的通不,求解释清楚一些
内存
malloc
------解决方案--------------------
当然不能。
你申请内存,系统为你开辟一段空间,由于你是动态申请的所以,空间在堆里面,实际上系统是把这一个地址区域归你使用,这6M的内存随你怎么玩。如果你再次调用申请2M,系统依旧会检查剩余的空闲堆空间(刚才那6M属于被使用状态),如果有,就一样道理,再为你申请新的地址空间。
------解决方案--------------------
可以的吧
void *realloc(void *mem_address, unsigned int newsize);
//用这个函数试试吧!
------解决方案--------------------
那是不行的
除非用内存池进行管理
------解决方案--------------------
那是不行了, 你需要释放掉原来的6M内存, 再重新申请8M, 但是如果运气好, 正好6M后面有大于2M的连续空间的话, 可能正好再次申请到的是原来的6M空间和后面追加了2M空间,