解决方案
5
其实电脑开机后物理内存的每个字节都是可读写的,从来不会原因是所谓的new、delete或malloc、free而被创建、销毁。区别仅在于操作系统内存管理模块在你读写时能否能发现并能否采取相应动作而已。操作系统管理内存的粒度不是字节而是页,一页通常为4KB。
5
这里有讲。
http://blog.csdn.net/yupei881027/article/details/42673343
10
越界访问了
改成 int *pi = malloc(sizeof(int)*2); 可正常
改成 int *pi = malloc(sizeof(int)*2); 可正常
10
你申请了4个字节,实际占用的空间当然是大于4字节的,它需要放内存管理信息,调试信息这些。
不然你free的时候它怎么能知道到底释放多大?
不然你free的时候它怎么能知道到底释放多大?