你如何完全删除C中的数组,以至于你可以重新初始化它?

时间:2011-05-05 23:02:57

标签: c arrays

如下:如何恢复内存,并将数组删除到可以在程序中稍后再次初始化的程度?像这样:

char * array[][2] = {
{"bla","bla","bla"},
{"blabity","blabity","bla"}
}
// Delete array
sizeof(array) == NULL;
char * array[][2] = {
{"bla","bla","bla"},
{"blabity","blabity","bla"}
}

4 个答案:

答案 0 :(得分:5)

你做不到。使用括号定义的数组(在函数 1 范围之外)直接编译到程序中,因此无法取消分配。但是,您可以通过再次将初始内容写入其中来重新初始化它。如果您希望能够随意创建和销毁数组,则需要将其存储为指针并使用mallocfree

1 :在函数中,每次运行函数时都会在堆栈上创建数组,并在退出时销毁它,除非它被定义为静态变量。你仍然无法在不返回的情况下解除分配。

答案 1 :(得分:2)

您无法销毁静态初始化的数组,因为它们的生命周期是整个程序的生命周期。您可以随时轻松分配更多静态数组 - 无需先释放旧的静态数据。

答案 2 :(得分:2)

您不能随意销毁静态和/或功能本地对象。

您可以明确控制其生命周期的唯一对象是动态分配的对象(例如,使用malloc)。

答案 3 :(得分:1)

使用“malloc系列”:malloc()calloc()realloc()free()

不要忘记#include <stdlib.h>