[英]Memory Allocation and Deallocation in C
我正在将内存分配给某些特定大小的void *。 分配后,我想显示一个内存泄漏,并想要释放该内存,但要达到给定的特定大小。
例如:我已经使用malloc分配了1000bytes的内存,现在我想取消分配这1000个byte中的500个byte。
我怎样才能做到这一点?
谢谢和问候
无法从分配的内存中free
一些内存。 但是realloc
选项是尝试调整 ptr指向的内存块的大小,该内存块先前是通过调用malloc或calloc分配的。
void func()
{
//allocate 1000 byte
void *ptr = malloc(1000);
//reallocate with new size
ptr = realloc(ptr ,500);
//Now you have memory of 500 byte
//free memory after use
return;
}
在已分配的1000个字节中,没有办法仅释放500个字节。
free()
函数仅使用malloc()
及其族函数返回的指针进行分配。 因此它将释放所有分配的内存。
如果您的目的是显示内存泄漏,则
void func()
{
void *p = malloc(1000);
// Some stuff
return;
}
分配的内存不会在此处释放,您会发生内存泄漏。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.