我来我网
https://5come5.cn
 
您尚未 登录  注册 | 菠菜 | 软件站 | 音乐站 | 邮箱1 | 邮箱2 | 风格选择 | 更多 » 
 

本页主题: [c]为什么不做这个[屏蔽]作就会出错呢? 显示签名 | 打印 | 加为IE收藏 | 收藏主题 | 上一主题 | 下一主题

springdew



性别: 帅哥 状态: 该用户目前不在线
等级: 栋梁之材
发贴: 936
威望: 0
浮云: 0
在线等级:
注册时间: 2005-12-29
最后登陆: 2024-07-12

5come5帮你背单词 [ tile /tail/ n. 瓦,瓷砖 ]


[c]为什么不做这个[屏蔽]作就会出错呢?

本帖被 zhd32 执行提前操作(2007-11-26)
RT:

#include "stdio.h"
#include "malloc.h"
#include "stdlib.h"

int main()
{
    int i;   
    unsigned char * newp;   
    unsigned long highresult=0x12345678;

    newp=(unsigned char *)malloc(4*sizeof(unsigned long));
    if (NULL==newp)
    {
        printf("NUll!!!!!!!");
    }   
    else
    {
              newp=(char *)&highresult;       
    }

    for(i=0;i<4;i++)
    {
        printf("%02x\n",*newp);
        newp++;
    }

    newp=NULL;      //为什么不做这个操作就会出错呢?

    free(newp);   
    return 0;
}


[ 此帖被springdew在2007-11-23 13:17重新编辑 ]
顶端 Posted: 2007-11-23 13:06 | [楼 主]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ a.d. // adj.公元 ]


free利用了一个结构体(不同的实现可能不一样啊,但是肯定是在内存中标记了这块内存是否被free了)
Copy code
typedef struct mblock {
    unsigned char isavailable;
    void *pmem;
};

void free(void *pmemblock) {
    if (free != NULL) {
        //会将 isavailable 设为 1(OR 0????)
    }
}
顶端 Posted: 2007-11-23 21:41 | [1 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ subsequent /'sΛbsikwənt/ a. 继…之后的,后来的 ]


Quote:
引用第10楼依然随意于2007-11-24 10:45发表的  :
我感觉这程序存在内存泄漏,
newp=(unsigned char *)malloc(4*sizeof(unsigned long));这条语句分了存储区,
然后newp=(char *)&highresult;结果newp又指向了highresult这个静态的变量,
如果后面直接free(newp)就相当于释放静态存储区,那是不可能的,所以要newp=NULL。

GG说的是对的
LZ问的是为什么会出错,内存泄露在这里不会出错
顶端 Posted: 2007-11-24 11:46 | [2 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ gun /gΛn/ n. 枪,炮 ]


Quote:
引用第13楼abcd0106于2007-11-24 20:18发表的  :


想问一下怎么弄到c库函数源码的。。

这个是我以前在哪看到的,大概是这个样子

开源的 glibc 很不错~
VS的C库函数源码在 \VC\crt\src
顶端 Posted: 2007-11-24 20:27 | [3 楼]
zhd32



性别: 帅哥 状态: 该用户目前不在线
等级: 版主
家族: YD一族
发贴: 619
威望: 0
浮云: 543
在线等级:
注册时间: 2006-04-22
最后登陆: 2009-06-22

5come5帮你背单词 [ hygienic // a. 卫生学的,促进健康的 ]


Quote:
引用第15楼abcd0106于2007-11-24 20:38发表的  :
可惜只装了vc6,glibc在网上下的是吗?


google一下 glibc 就有了~~~
顶端 Posted: 2007-11-24 22:00 | [4 楼]
我来我网·5come5 Forum » 程序员之家

Total 0.012145(s) query 6, Time now is:01-02 19:38, Gzip enabled
Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号