内存动态传递的问题

hai00jiao 2009-11-25 11:16:43
#include<iostream>
using namespace std;
void getmemory(char*p,int num)
{
p=(char*)malloc(sizeof(char)*num);
};
int main()
{
char*str=NULL;
getmemory(str,10);
strcpy(str,"hello");
return 0;
}
谁能给解释下错误的原因,越详细越好
...全文
68 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
你把str传递给getmemory后,p只是str的一个副本,所以给P分配内存,而str并没内存可用,所以strcpy(str,10)出错
james_hw 2009-11-25
  • 打赏
  • 举报
回复
。。。在getmemory(char*p,int num) 中,p只是个复制品,所以不行。具体内容建议看一下c语言的书籍比较好。

解决方法有两种:
char *getmemory(char*p,int num)
{
p=(char*)malloc(sizeof(char)*num);
return p;
};

void getmemory(char**p,int num)
{
*p=(char*)malloc(sizeof(char)*num);
};
linwendong1982 2009-11-25
  • 打赏
  • 举报
回复
char*p应该为char**p,里面*P = =(char*)malloc(sizeof(char)*num);

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧