内存动态传递的问题

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;
}
谁能给解释下错误的原因,越详细越好
...全文
30 点赞 收藏 3
写回复
3 条回复
namelij 2009年11月25日
你把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);
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告