关于一个申请内存的问题
偶是用DEV编译器
一、
定义一个结构
struct aa
{
int no;
char name[20];
struct aa * pNext;
};
二、写函数分配内存空间及写入数据
fu_input( struct aa * pItem)
{
//如果在函数中分配内存空间,超出函数范围后内存就不存在了
pItem = ( struct aa *)malloc( sizeof(struct aa) );
pItem->no=10;
strcpy(pItem->name,"hello");
pItem->pNext = NULL;
}
三、主函数里调用
int main()
{
struct aa * pHeader;
fu_input(pHeader);
//返回主函数后pHeader为空的,printf调用时就会报错
printf("%d,%s",pHeader->no,pHeader->name);
return 0;
}
//但如果偶在主函数里分配内存空间,再调用就没有问题
//调整后函数如下:
fu_input( struct aa * pItem)
{
pItem->no=10;
strcpy(pItem->name,"hello");
pItem->pNext = NULL;
}
//主函数里调用时
pHeader = ( struct aa *)malloc( sizeof(struct aa ));
fu_input(pHeader); //在主函数中分配内存空间就没有问题
现向各位请教一下,在函数fu_input中申请内存空间后,超出函数范围后,该内存空间就不存了吗?
而要在主函数里申请内存空间
这是个什么概念?
小的初学,请各位出手指点