【发布时间】:2015-07-29 17:43:45
【问题描述】:
这是一个非常基本的问题,但我没有找到明确的答案。我试图了解C 中的字符串文字是如何工作的。
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char *str = "Hello World!";
str = "Reassign str.";
char *str2 = "Something.";
str = strdup(str2);
free(str);
exit(EXIT_SUCCESS);
}
当我对字符串文字执行str = "Reassign str." 或str = strdup(str2) 时,Hello World 字符串会发生什么情况?它是否是可执行文件的一部分,是否超出范围,是否在我重新分配 str 后释放了内存?
【问题讨论】: