主题 : 【已解决】C语言-在子函数内分配的内存,母函数内能用吗?
新新航向
级别: 模拟名流
UID: 294
精华: 1
发帖: 7668
威望: 4 星
金钱: 92 浮游币
贡献值: 54 点
好评度: 12540 点
人气: 74 点
在线时间: 268(时)
注册时间: 2004-03-26
最后登录: 2023-04-11
楼主  发表于: 2006-11-12 20:00

【已解决】C语言-在子函数内分配的内存,母函数内能用吗?

我在WINDOWS XP 下使用turbo C
代码如下
引用
void subfunc(char **dat)
{
  int i, j;

  dat = (char **)malloc(3 * sizeof(char *));

  for (i = 0; i < 3; ++ i)
  {
    dat = (char *)malloc(16);

    for (j = 0; j < 15; ++ j)
      dat[j] = 'a';

    dat[j] = '\0';
  }
}

int main(void)
{
  char **dat = NULL;
  int i;

  subfunc(dat);

  for (i = 0; i < 3; ++ i)
    puts(dat);

  for (i = 0; i < 3; ++ i)
    free(dat);

  free(dat);

  return 0;
}


输出结果是三行乱码,如果将输出代码加入到子函数里则正常输出

子函数内分配的内存,母函数内能用吗?
如果能的话,我该怎样作才能做到这一点?

ps:为什么会出现斜体?
[ 此贴被拉菲尔在2006-11-15 10:38重新编辑 ]
枯れない花
级别: 论坛版主
UID: 11
精华: 0
发帖: 2266
威望: 8 星
金钱: 381185 浮游币
贡献值: 8813 点
好评度: 7896 点
人气: 1049 点
在线时间: 1384(时)
注册时间: 2004-03-24
最后登录: 2023-04-20
沙发  发表于: 2006-11-13 22:09

论坛的那个…………防转载的东西……实在是比较讨厌…………
看着乱七八糟……当然,也可能是我用Opera的关系……字比较大……

其实呢,你可以在主函数里面分配内存,然后把这个地址传到子函数里面操作~~这样子,主函数就可以打咯~~~
凡交,近则必相糜以信,远则必忠之以言。