问为什么此代码
char *p = "hello, world!"; p[0] = 'H';会崩溃?
答字符串常量实际上是常数。编译器可能会将它们放置在不可写入的存储区中,因此修改它们是不安全的。当您需要可写字符串时,您必须为它们分配可写内存,方法是声明一个数组,或者调用malloc。试着
char a[] = "hello, world!";
根据同样的论点,旧的 Unixmktemp例程
char *tmpfile = mktemp("/tmp/tmpXXXXXX");是不可移植的;正确用法是
char tmpfile[] = "/tmp/tmpXXXXXX"; mktemp(tmpfile);
参见问题 1.32。
参考:ISO 第 6.1.4 节
H&S 第 2.7.4 节,第 31-2 页