内存泄露也就是堆上的内存,如果其malloc后没有及时free,这块内存就无法释放,直到整个程序终止。
堆上剩余的内存块不是所有十余内存块之和,因为malloc函数申请的是连续的一块内存。
malloc(0)的返回值是一个正常的内存地址,但是你却无法使用这块大小为0的内存。
char *p = (char *)malloc(sizeof(char) * 10);
的话,free(p)的含义就是:把这块内存和p之间的所有关系都斩断,从此p和那块内存之间再无瓜葛,至于指针变量P本身保存的地址并没有改变,但是他对于这个地址处那块内存却没有了所有权,那块被释放的内存里面保存的值也没有改变,只是再也没有办法使用了。
阅读(655) | 评论(0) | 转发(0) |