【发布时间】:2015-08-17 13:04:50
【问题描述】:
在编写代码时遇到了一个问题
char* a = malloc (sizeof(char));
a = "blabla";
free(a);
给我一个错误,因为我将指针 a 的值更改为其他值。
那么,为什么会这样
char* a = "blabla";
printf("%s", a);
我再次将指针的值更改为blabla,我正在破坏指针地址。应该是错误吧?
【问题讨论】:
-
不,您没有更改第二个 sn-p 中指针的值。你用一个值初始化它。这与第一个示例有些不同。
-
当使用字符串字面量时,编译器会给你一个指向只读数组的指针。是什么让您认为将这个指针分配给声明为指针的变量会“破坏”该变量?
-
第一个sn -p出错的原因不是你改了
a的值,而是你改成什么。如果您在第二个末尾添加free(a),您将遇到完全相同的问题。