在这些情况下我需要采取什么措施来释放分配的内存吗?

Luc*_*uca 0 c memory memory-management

示例1:

char* var1 = "Random string";
Run Code Online (Sandbox Code Playgroud)

示例2:

char* firstline;
fscanf(input, "%s", firstline);
Run Code Online (Sandbox Code Playgroud)

示例3:

char* names[] = {"Karla", "Rob", "Tom"};
Run Code Online (Sandbox Code Playgroud)

Eri*_*hil 5

您显示的示例中没有动态分配的内存。

char* var1 = "Random string";

for 的内存var1可以静态分配(在程序运行期间),也可以自动分配(在其关联块的执行期间),具体取决于此声明出现的位置。无论哪种情况,它都是由 C 实现管理的,您不需要执行任何操作来释放它。

的内存"Random string"是静态分配的。

char* firstline;
fscanf(input, "%s", firstline);
Run Code Online (Sandbox Code Playgroud)

如上所述,内存firstline是静态或自动分配的。但是,firstline必须先将其设置为指向内存,然后再将其传递给fscanf. 你的例子没有显示这一点。如果firstline设置为动态分配的内存(如 ) ,那么好的做法通常是在不再需要内存时malloc调用以释放内存。free(在通用多用户操作系统中退出程序时,这不是必需的。)

char* names[] = {"Karla", "Rob", "Tom"};
Run Code Online (Sandbox Code Playgroud)

这与第一个示例相同。