C中的内存分配和释放

时间:2015-11-04 05:35:08

标签: c

我将内存分配给某个特定大小的void *。分配后我想显示一个内存泄漏,并希望释放该内存,但要给出一些特定的大小。

例如:我已经使用malloc分配了1000字节的内存,现在我想释放这1000字节的500字节。

我该怎么做?

谢谢你,问候

2 个答案:

答案 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;
}

此处未释放分配的内存,并且您有内存泄漏。