c语言内存管理相关面试题

本文整理了关于C语言内存管理的面试题,涉及内存分配、释放、指针使用等常见错误及修正方法,强调了内存泄露和野指针问题的重要性。
摘要由CSDN通过智能技术生成

整理了一些有关内存管理测试题

类型一

1.
#define BUFFER_SIZE 256
void GetMemory(char **ppszbuf)
{
    if (NULL == ppszbuf)
    {
        assert(0);
        return 0;
    }
    ppszbuf = (char *)malloc(BUFFER_SIZE);
    //*ppszbuf = (char *)malloc(BUFFER_SIZE);
}
int main()
{
    char *pszbuf = NULL;
    GetMemory(&pszbuf);
    strcpy(pszbuf, "hello world!\n");
    printf("%s", pszbuf);
    free(pszbuf);
    system("pause");
    return 0;
}

这道题有两个错误:
错误1:pszbuf并没有接收到申请空间的地址,所以给一个空指针拷贝字符串出错
错误2:申请的空间地址被ppszbuf保存,当函数调用结束后,该形参被释放,所以该空间的地址无法再被获取,即会出现内存泄露
如何改正:*ppszbuf = (char )malloc(BUFFER_SIZE);


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值