如果您要执行以下操作:
char array[2][5] = {"cars", "tags"}
char array2[] = "computer";
有一个隐式分配的内存分配等于(对于第一行):
sizeof(array); OR
sizeof(char*10);
或者无论如何你想这样做。
或者,可以这样做:
char *ptr = "cars";
char *ptr2 = malloc(sizeof(*ptr2)*5);
*ptr2 = "cars";
我知道,如果您使用指针来使用 malloc 显式分配内存,那么使用 free(ptr) 释放该指针是一个好习惯;
但是,当您如上所述定义事物时,以下调用是否与显式分配内存的理由相同?
free(ptr);
free(ptr2);
free(array);
free(array2);
-- 顺便说一句,上面所有的声明/初始化都是隐含的以 NULL 结尾的字符串,对吧?