- 论坛徽章:
- 0
|
这个帖子很受启发,自己做了一个实验想验证一下,但是结果不尽如人意,请大家看看。我机器是AIX主机,做了一个这样的实验,代码如下:- #include <stdio.h>
- #include <string.h>
- #include <strings.h>
- int main(void)
- {
- const int i = 10;
- int *p;
- p = (int *)&i;
- *p = 20;
- printf("i = [%d]\n", i);
- return 0;
- }
复制代码 可以编译,结果是
$ ./test3
i = [10]
内容并没有修改,变换了一下const int i = 10;的位置- #include <stdio.h>
- #include <string.h>
- #include <strings.h>
- const int i = 10;
- int main(void)
- {
- int *p;
- p = (int *)&i;
- *p = 20;
- printf("i = [%d]\n", i);
- return 0;
- }
复制代码 进程编译通过,但是溢出,用dbx跟踪后发现出错在*p = 20;这条语句上,大家谁能解释解释看,是啥原因?
|
|