请原谅我对C语言的生疏。
考虑以下C程序:
在此过程退出之前,我是否应该释放“numbers”指针?
考虑以下C程序:
int doSomething() {
char *numbers="123456";
...
}
在此过程退出之前,我是否应该释放“numbers”指针?
不,你没有使用malloc
分配它。那么为什么要释放它呢?
通常,该字符串被放置在可执行文件的只读区域。
您实际上不需要调用delete或free,这些运算符仅用于清除已由运行时内存分配器(如malloc,calloc,GlobalAlloc,HeapAlloc等)分配的内存。当您像示例中那样定义指针时,实际上是在可执行文件中为字符数组分配空间。因此,字符串长度越大,可执行文件大小就越大,从而增加了您的工作集。
malloc(2)
分配了内存后才能使用free(3)
释放它(除了一些库函数,如getaddrinfo(3)
/freeaddrinfo(3)
)。不会,因为它没有通过 malloc/ calloc / realloc 分配。
它将自动被释放,因为它是一个自动变量。
free(numbers)
。 - David Thornley