繁体   English   中英

C中的内存分配和释放

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM