#include<stdio.h>
#include<string.h>
#include<stdlib.h>
void main()
{
char *p1=(char *)malloc(1024); //1k char *p2=(char *)malloc(4096); //4k memset(p2,0,4096); char *p3=(char *)malloc(8192); //8k char *p4=(char *)malloc(128*1024*1024); //128k char *p5=(char *)malloc(115*1024);//115k printf("p1=%p p2=%p p3=%p p4=%p p5=%p\n",p1,p2,p3,p4,p5); memset(p2,'1',20); free(p2); memset(p2,'y',10); printf("p2=%s\n",p2); free(p3); //core free(p5); free(p1); }
输出: p1=0x1c60010 p2=0x1c60420 p3=0x1c61430 p4=0x7ffbabc2b010 p5=0x1c63440
p2=yyyyyyyyyy?
Segmentation fault (core dumped)
1.p2-p2 为啥不是 1024
2.p4 的地址为啥和其它的不一样
3.为啥在 free(p2)之后还能读写 p2
4.为啥 p2 的打印不是 yyyyyyyyyy1111111111
5.为啥在 free(p3)的时候会 core
