gpt4 book ai didi

c - 您将如何释放分配的内存?

转载 作者:行者123 更新时间:2023-11-30 20:47:10 24 4
gpt4 key购买 nike

我需要释放程序上分配的一些内存。当我需要的时候我可以使用一些东西来清理内存吗?

#include<stdio.h>
#include<stdlib.h>
#define MAXROW 3
#define MAXCOL 4

int main()
{
int **p, i, j;
p = (int **) malloc(MAXROW * sizeof(int*));
return 0;
}

最佳答案

第 1 点

您无法释放一些内存。你必须释放全部。详细来说,无论是通过对 malloc() 或系列的单次调用分配的任何内存,都将一次被free-d。您无法释放一半(或左右)已分配的内存。

第2点

  • do not cast Cmalloc() 及其系列的返回值。
  • 你应该always write sizeof(*ptr) 而不是 sizeof(type*)

第3点

您可以使用free()释放分配的内存。

例如,请参阅下面的代码,请注意内联注释

#include<stdio.h>
#include<stdlib.h>
#define MAXROW 3
#define MAXCOL 4

int main(void) //notice the signature of main
{
int **p = NULL; //always initialize local variables
int i = 0, j = 0;

p = malloc(MAXROW * sizeof(*p)); // do not cast and use sizeof(*p)
if (p) //continue only if malloc is a success
{

//do something
//do something more

free(p); //-----------> freeing the memory here.
}
return 0;
}

关于c - 您将如何释放分配的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30317852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com