当前位置: 首页 > news >正文

C语言malloc指针传参错题总结

一、错误版:一级指针传参(核心bug)

错误点

1. 函数传参是值拷贝,修改形参p不影响外部str

2. str一直为NULL,strcpy空指针崩溃

3. malloc地址丢失,产生内存泄漏

方案1:二级指针 char**

原理

1. 传入指针变量地址 &str

2. *p 直接操作外部str,完成赋值

方案2:函数返回指针(替代二级指针)

原理

1. 函数内部存malloc地址,return传回外部

2. 外部变量接收返回值,无需二级指针

3. 原函数参数无作用,可删除

通用必守规范(三套代码共同坑点)

1. 缺头文件:stdio.h/string.h/stdlib.h

2. 不校验malloc返回NULL,易崩溃

3. printf(str)不安全,标准写法printf("%s",str)

4. malloc不配对free → 内存泄漏

5. free后指针不置空 → 野指针隐患

核心区分短句

改指针指向的数据:一级指针

改指针自身存储的地址:二级指针 / 函数返回指针

二、函数返回数组地址(栈/静态/堆对比)

1. 普通局部数组(栈区,产生野指针)

函数结束栈内存销毁,返回失效地址

2. static修饰局部数组(静态区,安全)

static变量存全局静态区,函数结束内存不销毁

3. malloc堆内存(堆区,安全,需手动释放)

堆内存不受函数生命周期限制,用完必须free

三、野指针知识点+对应代码

定义

指针存储无效、不受系统管控的内存地址,访问会乱码、程序崩溃

野指针三种产生场景

1. 未初始化指针

2. 返回普通栈局部变量地址(上方已附代码)

3. free后指针未置空

空指针 vs 野指针

- 空指针: p = NULL ,固定指向地址0,操作系统有保护,不会崩溃

- 野指针:随机无效内存地址,无保护,极易程序崩溃

规避野指针三规则

1. 指针定义时立即初始化( NULL /有效地址)

2. 禁止返回普通栈局部数组的地址

3. free 释放内存后,立刻将指针赋值为 NULL

http://www.jsqmd.com/news/1138239/

相关文章:

  • 微软计划裁员约4800人,涉及销售和Xbox游戏业务部门
  • PPTP 隧道建立、收发数据与断开流程简单总结
  • 激活函数的“生”与“死”:我们如何一步步拯救了神经元?
  • Bayes、决策树、SVM 图像分类对比:6类垃圾数据集上66.13% vs 52.17% vs 52.04%
  • 调整才4天就想结束?AI休整期,谁在偷偷回血
  • DVWA命令注入漏洞检测与利用实战一课一得
  • STM32-BOOT的三种启动方式
  • PgBouncer 的 statement 模式详解
  • 【Resume agent】仿超级简历模版,实现AI 面试
  • 如何快速上手kail_dnn_adapter:从安装到运行的完整指南
  • Autoware 离线建图 vs. 在线SLAM:3种场景下的NDT方案选型与性能实测
  • 反激式开关电源 PCB 设计 3 大陷阱:从变压器封装到市电测试的安全避坑指南
  • 2026免费视频去水印方法:电脑手机在线无需下载工具教程
  • 毕设项目 深度学习火焰检测识别(源码+论文)
  • 【Java实习面试算法冲刺】链表
  • 飞马SLAM100 手持激光雷达:13分钟快速模式点云解算实战(附SLAM-GO-POST 3.0配置)
  • 国产打印机二十年突围:从被专利封堵到全链路自主可控的产业逻辑
  • 构建股票预测系统的完整流程
  • 怎么样在遍历列表时动态判断阈值是否被满足并返回相应文本
  • Java毕设选题推荐:基于 SpringBoot 的月嫂排班护理服务系统的设计与实现 基于前后端分离的母婴月子健康档案管理系统【附源码、mysql、文档、调试+代码讲解+全bao等】
  • STAR RNA-seq比对工具:从零开始掌握转录组数据分析的终极指南
  • 数据库工程:Explain执行计划对比实战指南‌
  • 国内高校毕业生最适用的AI论文软件有哪些?
  • Rive渲染器实战:解决跨平台高性能动画渲染难题
  • SO101复现 更新ing
  • 向 Hermes Agent 提交 Bug 修复:从诊断到 CEO 亲自加固的完整记录
  • Meta开发的AI编程助手,真的懂你吗?
  • SFML跨平台多媒体开发实战:构建高性能应用的架构深度解析
  • 2026 降AIGC网站实测盘点:亲测好用,毕业季生存手册
  • Python 知识1