- 论坛徽章:
- 0
|
下面这两段代码在分配内存的时候只分配了一个整形数长度的空间,但是在接下来的语句中在未分配的单元中进行了非法写。
但是第二段代码运行无错,第一段代码运行时提示: glibc detected *** invalid next size(fast) 的出错信息。
问大家,两个赋值语句的不同,造成对运行结果不同的原因是什么?
- #include <stdlib.h>
- int main(int argc, char *argv[])
- {
- int *p = (int *)malloc(sizeof(int));
- int i;
- for (i = 0; i < 12; i++) {
- // *(p+i) = i + 31;
- *(p+i) = i;
- }
- free(p);
- return 0;
- }
复制代码
- #include <stdlib.h>
- int main(int argc, char *argv[])
- {
- int *p = (int *)malloc(sizeof(int));
- int i;
- for (i = 0; i < 12; i++) {
- *(p+i) = i + 31;
- // *(p+i) = i;
- }
- free(p);
- return 0;
- }
复制代码
[ 本帖最后由 什么名 于 2008-11-26 20:09 编辑 ] |
|