标题:求大神解答个问题,一直搞不懂
只看楼主
PP_make
Rank: 2
等 级:论坛游民
帖 子:21
专家分:62
注 册:2010-4-25
得分:0 
回复 8楼 SGT_JM
呵呵,分析的很到位!学习了,在此顶一下!!

    free(str);
    只是把所申请的内存空间释放了,但指针还是存在的,所只的内存地址还是原来的地址,可以使用 printf("%lx\n", &str); 查看一下。
    再次pirntf("%s\n", str ); 时为空,但用if 判断时却不为空! 却时显得很诡异!!

        一般的情况下,free(str)之后,也就接着把 str = NULL; 这也许就是原因所在吧~~
2011-03-21 16:56
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
得分:0 
野指针问题
2011-03-21 17:40
hiwo
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2008-10-16
得分:0 
有点懂了,多谢各位啊
2011-03-21 21:06
玄界宗主
Rank: 2
等 级:论坛游民
帖 子:10
专家分:22
注 册:2011-3-21
得分:0 
刚才我调试了一下,我的说显示没有malloc的定义我加了malloc.h 但还是没有定义。什么意思?知道的朋友说下。
2011-03-21 21:38
我是传奇
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:109
注 册:2011-3-21
得分:0 
#include<stdio.h>
#include<malloc.h>
#include<string.h>
void main()
{
    char *str = (char *) malloc(100);
    strcpy(str, "hello");
    free(str);                                   
    str = NULL;
    if(str != NULL)                              
    {
        strcpy(str, "world");
        printf("%s\n",str);
    }
}
不知道为啥,不显字符,是运行速度太快了吗?
2011-03-22 12:27
我是传奇
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:88
专家分:109
注 册:2011-3-21
得分:0 
包头文件了吗,就是#include"string,h"
2011-03-22 12:28
eduwc
Rank: 1
等 级:新手上路
帖 子:8
专家分:1
注 册:2011-2-10
得分:0 
char *str = (char *) malloc(100);
    strcpy(str, "hello");
    free(str);                                   //这个语句的作用是把str删除吗?
    if(str != NULL)                              //指针被释放了,他会随机指向一个值(这里一定不会为空)
    {
        char *str = (char *) malloc(100);//重新在申请空间
        strcpy(str, "world");
        printf("%s\n",str);
    }
要想输出的 加上红色的那一句就好

ps;
我是传奇  你在程序最后面加上system("pause");就不会闪一下就消失了
2011-03-22 16:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-334316-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.389866 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved