我将内存分配给某个特定大小的void *。分配后我想显示一个内存泄漏,并希望释放该内存,但要给出一些特定的大小。
例如:我已经使用malloc分配了1000字节的内存,现在我想释放这1000字节的500字节。
我该怎么做?
谢谢你,问候
答案 0 :(得分:2)
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;
}
答案 1 :(得分:1)
无法从分配的1000字节中释放500个字节。
free()
函数只接收由malloc()
返回的指针及其族函数进行分配。所以它将释放所有分配的内存。
如果您的目的是显示内存泄漏,那么
void func()
{
void *p = malloc(1000);
// Some stuff
return;
}
此处未释放分配的内存,并且您有内存泄漏。