Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中完全删除数组,直到可以重新初始化它?_C_Arrays - Fatal编程技术网

如何在C中完全删除数组,直到可以重新初始化它?

如何在C中完全删除数组,直到可以重新初始化它?,c,arrays,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"} } 不能销毁静态初始化的数组,因为它们的生存期是

如中所示:如何恢复内存,并删除阵列,使其达到稍后在程序中再次初始化的程度?像这样:

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

不能销毁静态初始化的数组,因为它们的生存期是整个程序的生存期。您可以随时轻松地分配更多的静态数组—无需先解除分配旧的静态数据。

您不能任意销毁静态和/或函数本地对象


唯一可以显式控制其生存期的对象是动态分配的对象(例如,使用
malloc
)。

您不能。使用括号定义的数组(在function1的作用域之外)直接编译到程序中,因此无法释放。但是,只需将初始内容再次写入即可重新初始化。如果希望能够随意创建和销毁数组,则需要将其存储为指针,并使用
malloc
free

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

使用“malloc系列”:、和


别忘了加入#

sizeof(array)==NULL
?你不能,不完全是这样-变量是在一个作用域中定义的,一旦定义了,就不能不定义。是的,
sizeof
这只是一个猜测。我将使用
malloc
free
如何才能
malloc
一个数组同时设置它的值?(或者你不会吗?@JV你可以使用带有静态数组的
memcpy
来一次性设置整个内容,但除此之外,你必须单独设置。你可以轻松地销毁函数本地对象。只需从函数返回即可。@williampersell:这不是“任意”的。