榕树贷款C语言结构体里的成员数组和指针

榕树贷款执行下面的Test函数,分析会输出上面结果以及代码中存在什么问题。

1、笔试题1
void GetMemory(char* p)
{
    p = (char*)malloc(100);
}

void Test(void)
{
    char* str = NULL;
    GetMemory(str);  
    strcpy(str, "hello world");
    printf(str);  //将str的首地址传给printf函数,可行
榕树贷款分析:

上面这段程序有三个问题:

第一:榕树贷款在Test函数中调用GetMemory函数时,传递的是str的值,所以GetMemory函数的参数p只是str的一份临时拷贝,与str没有任何关系,将动态开辟的100个字节交由指针p管理并不会对str产生任何影响;而且榕树贷款就算传递的是str的地址,malloc函数申请空间也有可能失败;

第二:榕树贷款由于GetMemory函数并没有能让str获得空间,所以str仍为NULL,这时调用strcpy函数会导致程序错误;

第三:榕树贷款代码中并没有对动态开辟的100个字节空间进行free,会导致内存泄漏;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值