如何从C中的char阵列中释放记忆



我创建了一个像so:

的字符数组
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;时相同:您不需要手动管理动态资源。)

arr脱离范围时,与arr关联的内存将自动释放。它要么是局部变量,要么是静态分配的,但没有动态分配。

您要遵循的一个简单规则是,您必须在一个由malloccallocrealloc返回的指针上的每个调用free()

char arr[3] = "bo";

ARR将内存带入堆栈段。如果ARR超出范围,它将自动免费。

最新更新