Mark&Sweep 算法,先标记为不可达,然后从根开始遍历标记是否可达,最后将不可达对象释放.
scanf("%d",&val);
// 将 int 值作为地址传递.很可能引发异常
scanf("%d",val);
例如 malloc(8)
但是访问的区域却不只 8,越界访问
char buf[64];
gets(buf); // 可能输入不止64 byte
int 长度 32 指针根据系统不同长度不同
创建数组长度n
,试图修改n+1
位置内存
*
运算符是右结合的:
*ptr --; //*(ptr --)
(*ptr) --;
ptr ++ ; // ++ 并非是 +1 而是根据指针指向数据类型计算的
释放内存后继续引用
int *test(){
int val = 10;
return &val;
}
申请后忘记释放