如何从C中的char数组中释放内存
我创建了一个char数组,如下所示:
char arr[3] = "bo";
如何释放与名为“arr”的数组相关联的内存?
当函数结束时,自动释放局部变量,您不需要自己释放它们。 您只释放动态分配的内存(例如使用malloc
),因为它在堆上分配:
char *arr = malloc(3 * sizeof(char)); strcpy(arr, "bo"); // ... free(arr);
有关动态内存分配的更多信息,请访问: http : //en.wikipedia.org/wiki/C_dynamic_memory_allocation
你根本不会放任何东西。 由于您从未动态获取任何资源,因此您无需拥有任何资源,甚至可以免费获取资源。
(它与你说int n = 10;
时的情况相同int n = 10;
:不需要动态资源,你必须手动管理。)
当arr
超出范围时,与arr
关联的内存将自动释放。 它可以是局部变量,也可以是静态分配的,但不是动态分配的。
您可以遵循的一个简单规则是,您必须只对调用malloc
, calloc
或realloc
返回的指针调用free()
。