Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2122040
  • 博文数量: 229
  • 博客积分: 7217
  • 博客等级: 上校
  • 技术积分: 3224
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-19 17:23
个人简介

个人主页https://xugaoxiang.com,微信公众号: Dev_Club 或者搜索 程序员Club

文章分类

全部博文(229)

文章存档

2017年(1)

2016年(20)

2015年(23)

2013年(1)

2012年(23)

2011年(68)

2010年(62)

2009年(31)

分类: LINUX

2011-09-23 11:40:03

用法一
/*str释放后不等于NULL,而是一个不确定的值,形成野指针,执行if语句,打印world*/
#include
#include

int main()
{
    char *str = (char*)malloc(100);
    strcpy(str, "hello");
    free(str);
    if (str != NULL)
    {
        strcpy(str, "world");
        printf(str);
    }
}

用法二
/*段错误,函数调用值传递*/
#include
#include

void GetMemory(char *p)
{
   p = (char*)malloc(100);
}

int main()
{
   char *str = NULL;
   GetMemory(str);
   strcpy(str, "hello world");
   printf(str);
}

用法三
/*内存分配成功,打印hello*/
#include
#include

void GetMemory(char **p, int num)
{
    *p = (char*)malloc(num);
}

void main()
{
    char *str = NULL;
    GetMemory(&str, 100);
    strcpy(str, "hello");
    printf(str);
}

用法四
/*打印乱码,当GetMemory函数返回时,自动变量p就会被释放,str所指向的内容就不确定了*/
#include
#include

char* GetMemory()
{
   char p[] = "hello world";
   return p;
}

int main()
{
   char *str = NULL;
   str = GetMemory();
   printf(str);
}



阅读(2064) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~