C语言问题集--动态分配的内存释放之后就不能再使用

原著:Steve Summit
翻译:朱群英, 孙 云
http://c-faq-chn.sourceforge.net/



 动态分配的内存一旦释放之后你就不能再使用, 是吧?

是的。有些早期的 malloc() 文档提到释放的内存中的内容会 ``保留", 但这个欠考虑的保证并不普遍而且也不是 C 标准要求的。

几乎没有那个程序员会有意使用释放的内存, 但是意外的使用却是常有的事。考虑下面释放单链表的正确代码:

    struct list *listp, *nextp;
    for(listp = base; listp != NULL; listp = nextp) {
        nextp = listp->next;
        free(listp);
    }

请注意如果在循环表达式中没有使用临时变量 nextp, 而使用 listp = listp-> next会产生什么恶劣后果。

 » 相关连接:
C语言问题集--程序总是崩溃malloc C语言问题集--为什么我只能分配 64 C语言问题集--malloc(strlen(s) + C语言问题集--把malloc返回值换为
C语言问题集--函数返回一个指针 C语言问题集--一个指针变量分配多 C语言问题集--代码char *p; strcpy C语言问题集--strcat()
C语言问题集--为什么这段代码不行 C语言问题集--数组是函数参数, 为 C语言问题集--在函数参数传递时混 C语言问题集--怎样编写接受编译时
 » 本栏目最新帖:

Powered by PHPWind v6.0 Code © 2003-08