那么p获得的内存块的长度到底是多少?能否往里面写入数据?
答:不妨用这段代码来测试:
那么稍后p需要用free(p)来释放,以避免内存泄漏吗?
答:不妨用这段代码来测试:
从打印看来,虽然是调用malloc(0);,但是每次指向的地址都不同,并且逐渐增大,偏移是0x10,也就是16个字节。
那么会导致进程退出吗?
答案:不会,free(NULL)相当于啥事儿不干。
那么会导致进程退出吗?
答案:不会,进程永远循环在while(1)里面,不会出错退出。
那么进程会出错退出吗?
答案:进程会出错退出,打印堆栈信息,提示
类似的信息。所以已经free掉的内存,除非又申请回来了,否则不能再次去free它,否则进程会出错。
那么“野指针”还可以这样定义,指向所有非法地址(NULL除外)的指针都可以叫野指针。
那么程序应该改成这样较妥:
我想,根据打印信息来看,没什么需要解释的了。顺便还弄透彻了指针以及函数传参。
(7)刚malloc后,马上就free,然后一直循环,会不会总是申请到同一块内存?
为什么不会一样呢?这个可以深究一下Linux系统的内存分配方式了,这就涉及到内核了。
(8)malloc(0)返回的真的入man手册所说:要么是NULL,要么是一个unique的pointer?
答案:不妨看下这段代码:
联系客服