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)
您显示的示例中没有动态分配的内存。
char* var1 = "Random string";
for 的内存var1可以静态分配(在程序运行期间),也可以自动分配(在其关联块的执行期间),具体取决于此声明出现的位置。无论哪种情况,它都是由 C 实现管理的,您不需要执行任何操作来释放它。
的内存"Random string"是静态分配的。
Run Code Online (Sandbox Code Playgroud)char* firstline; fscanf(input, "%s", firstline);
如上所述,内存firstline是静态或自动分配的。但是,firstline必须先将其设置为指向内存,然后再将其传递给fscanf. 你的例子没有显示这一点。如果firstline设置为动态分配的内存(如 ) ,那么好的做法通常是在不再需要内存时malloc调用以释放内存。free(在通用多用户操作系统中退出程序时,这不是必需的。)
Run Code Online (Sandbox Code Playgroud)char* names[] = {"Karla", "Rob", "Tom"};
这与第一个示例相同。