在写代码的时候遇到了一个问题
char* a = malloc (sizeof(char));
a = "blabla";
free(a);
给我一个错误,因为我将指针 a 的值更改为其他值。
那么,为什么会这样呢
char* a = "blabla";
printf("%s", a);
我再次将指针的值更改为 blabla
,我破坏了指针地址。应该是错误吧?
最佳答案
第一种情况有一个错误,因为您将地址传递给 free
而不是从 malloc
获得的地址。这是一个错误。
第二种情况没有这个问题,那为什么不行呢?您不是在“破坏”指针的地址,而是将其设置为有效地址,然后将该有效地址用于有效目的。
第二个例子没有什么不同:
int i = 1;
printf ("%d", i);
您设置了它的值并以正确的方式使用了新的合法值,所以没问题。
关于更改C中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051189/