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

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

springdew



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

5come5帮你背单词 [ petty /'peti/ a. 不重要的,次要的,渺小的,偏狭的,地位低下的 ]


[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 | [楼 主]
yinx



性别: 帅哥 状态: 该用户目前不在线
等级: 人见人爱
家族: 丢丢
发贴: 2333
威望: 0
浮云: 1260
在线等级:
注册时间: 2006-09-15
最后登陆: 2009-05-11

5come5帮你背单词 [ cosmetic /koz'metik/ a. 化妆用的,美发的;n. (pl.)化妆品 ]


newp是malloc出来的空间的头指针,不是可以随意改变它的值的。

改变了它的值再free也是没有任何意义的,那个申请的空间还占着内存。

至于加了newp=NULL;之后不出错是因为free函数对传入的参数作了检查,如果NULL不作处理而直接退出。

如果没有这一句,当时的newp的值就不是一个malloc出来的空间的头指针,free它的话就会出错。
本帖最近评分记录:
  • 浮云:5(zhd32) 正解~~
  • 顶端 Posted: 2007-11-23 13:39 | [1 楼]
    yinx



    性别: 帅哥 状态: 该用户目前不在线
    等级: 人见人爱
    家族: 丢丢
    发贴: 2333
    威望: 0
    浮云: 1260
    在线等级:
    注册时间: 2006-09-15
    最后登陆: 2009-05-11

    5come5帮你背单词 [ sideway // ad. & a. 斜向一边(的),侧身(的) ]


    Quote:
    引用第14楼zhd32于2007-11-24 20:27发表的  :

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

    开源的 glibc 很不错~
    VS的C库函数源码在 VCcrtsrc


    Thanks~
    我现在才发现
    顶端 Posted: 2007-11-24 23:08 | [2 楼]
    我来我网·5come5 Forum » 程序员之家

    Total 0.009122(s) query 6, Time now is:11-22 15:09, Gzip enabled
    Powered by PHPWind v5.3, Localized by 5come5 Tech Team, 黔ICP备16009856号