如何用指针申请动态内存?函数的参数是一个指针吗?
如果函数的参数是一个指针,不要指望用该指针去申请动态内存。下面例子中,Test 函数的语句GetMemory(str, 200)并没有使str获得期望的内存,str 依旧是 NULL。
void GetMemory(char *p, int num) { p = (char *)malloc(sizeof(char) * num); } void Test(void) { char *str = NULL; GetMemory(str, 100); //str 仍然为 NULL strcpy(str, "hello"); //运行错误 }
毛病出在函数 GetMemory 中。编译器总是要为函数的每个参数制作临时副本,指针参数 p 的副本是 _p,编译器使 _p = p。如果函数体内的程序修改了_p 的内容,就导致参数 p 的内容作相应的修改。这就是指针可以用作输出参数的原因。在本例中,_p 申请了新的内存,只是把_p 所指的内存地址改变了,但是 p 丝毫未变。所以函数 GetMemory并不能输出任何东西。事实上,每执行一次 GetMemory 就会泄露一块内存,因为没有用free 释放内存。
(资料图)
如果非要用指针参数去申请内存, 那么应该改用“指向指针的指针”,看下面的例子:
void GetMemory2(char **p, int num) { *p = (char *)malloc(sizeof(char) * num); } void Test2(void) { char *str = NULL; GetMemory2(&str, 100); // 注意参数是 &str,而不是 str strcpy(str, "hello"); cout<< str << endl; free(str); }
由于“指向指针的指针”这个概念不容易理解,我们可以用函数返回值来传递动态内存。这种方法更加简单,看下面的例子:
char *GetMemory3(int num) { char *p = (char *)malloc(sizeof(char) * num); return p; } void Test3(void) { char *str = NULL; str = GetMemory3(100); strcpy(str, "hello"); cout<< str << endl; free(str); }
用函数返回值来传递动态内存这种方法虽然好用, 但是常常有人把 return 语句用错了。这里强调不要用 return 语句返回指“栈内存”的指针,因为该内存在函数结束时自动消亡,看下面的例子:
char *GetString(void) { char p[] = "hello world"; return p; // 编译器将提出警告 } void Test4(void) { char *str = NULL; str = GetString(); // str 的内容是垃圾 cout<< str << endl; }
用调试器逐步跟踪 Test4, 发现执行 str = GetString 语句后 str 不再是 NULL 指针但是 str 的内容不是“hello world”而是垃圾。如果把上面示例改成下面这样,会怎么样?
char *GetString2(void) { char *p = "hello world"; return p; } void Test5(void) { char *str = NULL; str = GetString2(); cout<< str << endl; }
函数 Test5 运行虽然不会出错,但是函数 GetString2 的设计概念却是错误的。因为 GetString2 内的“hello world”是常量字符串,位于静态存储区,它在程序生命期内恒定不变。无论什么时候调用 GetString2,它返回的始终是同一个“只读”的内存块。
标签:
相关推荐:
精彩放送:
- []环球快看点丨TD早报 | 锦江与雅高签署谅解备忘录;广州会展业回暖激活商旅市场
- []环球视讯!2021年养老金计算公式 2021养老金计算公式是怎样的
- []焦点速看:双预警!通州明后天阵风8级!伴有沙尘!注意防范——
- []社保卡激活了是不是金融功能就开通了,不一定
- []解局 | 建发一周三城拿地记:“保守观望”和“规模扩张”
- []公积金可以取几次,有以下四种情况
- []环球观天下!悟空保是什么保险如何退保
- []过户车保险费为什么这么贵,原因有以下三点
- []当前热点-公允价值计量的交易性金融资产_公允价值计量
- []动态:思科瑞2022年净利9742.6万同比增长0.38% 总经理马卫东薪酬100万
- []民和股份:公司种鸡减值确认后不转回,待种鸡淘汰时转销对应的减值金额
- []焦点热门:GQY视讯:公司将在提升内部管理促进工作效能提升的同时,更积极主动应对市场机会
- []快来,在这条“樱花大道”邂逅春日浪漫!
- []环球速讯:气垫鞋跑步好吗(气垫鞋跑步好)
- []msci中国指数是什么意思
- []消息!公司一上市就发财了吗
- []世界热点!中国a股总市值
- []路程除以耗油量等于什么
- []当前焦点!重庆证券公司怎么样啊
- []【时快讯】究极绿宝石叉字蝠怎么进化?双腿变翅膀,论叉字蝠神奇的演化路线
- []世界热议:保利发展前三月销售1141.3亿?月内57亿新增四宗地块
- []观天下!公司名称翻译成英文怎么写_公司名称翻译成英文
- []6折人才房将成历史?深圳明确:取消安居房和人才房!
- []观焦点:迎大运动起来 全国劳模与成都职工代表乐动全城
- []当前报道:动态市盈率是什么
- []焦点短讯!gloryhole是什么
- []当前视讯!同花顺模拟炒股输光了需要投资者返还资金吗
- []热点聚焦:股市开盘是什么意思
- []世界最资讯丨福布斯发布2023全球亿万富豪榜;海底捞高层指考核方式升级;爱马仕计划加速扩张中国市场;淘宝APP首页测试新增99特卖频道
- []环球最资讯丨股市怎么样才能赚钱
- []焦点短讯!常青科技:募资加码研发创新,推动核心技术自主可控
- []星期六股票代码是多少
- []当前焦点!金价还会跌吗
- []【环球速看料】电子体温计测量哪个部位最准确
- []世界新消息丨中铁隧道股份有限公司是国企还是央企
- []科创50有哪些股票
- []鳄鱼有舌头吗(鳄鱼的舌头可以防止水倒灌吗)
- []当前观察:每日净值是什么意思
- []当前看点!债权投资减值准备能够转回吗
- []天天滚动:政府为什么不强制贾跃亭回国
- []当前聚焦:福州期货开户哪家公司比较好
- []视焦点讯!汗斑怎么治疗彻底根除_汗斑的最佳治疗方法
- []焦点日报:一季度国家铁路客货运输两旺
- []滚动:刚买了三者没买不计免赔怎么办
- []实时:公积金提前还款
- []医保比例单位和个人怎么计算
- []当前头条:房屋结构安全鉴定报告_房屋结构
- []环球热门:共创储能新时代|比亚迪储能荣膺第十一届储能国际峰会暨展览会ESIE2023多项大奖
- []权威发布:科华数能用户侧储能系统出货量TOP1
- []世界热议:“风起水涌,能量聚拢”| 科陆重磅发布Aqua、Aero、Byzer储能新品
- []特变电工新能源携光储新品亮相储能国际峰会
- []环球焦点!聚焦ESIE2023 | 兴储世纪与行业一起迈步新征程
- []每日热讯!蜂巢能源叠片短刀L500型325Ah储能专用电芯首次亮相储能国际峰会
- []教人开网店的骗局_网上教开网店是真是假
- []【天天聚看点】瑞源电气与您相约第十一届储能国际峰会,我们在6号馆(S86)等您!
- []全球焦点!1八成干的香肠冷冻能放多久?
- []今日热议:房子,竟然成了万恶之源
- []天天简讯:透露大模型进展以及英伟达合作情况,AI操作系统龙头亮了!这些高增长低估值股热度爆棚
- []快资讯:鑫铂股份:修订后的考核指标2应是增长至的概念,公司已就上述笔误进行了更正,详见巨潮资讯网
- []招商银行信用卡咖啡风暴10元来袭!
- []尉氏附近有好玩的地方吗 尉氏有什么好玩儿的吗 尉氏附近有好玩的地方吗在哪
- []空客在华获160架新飞机订单;新东方将布局文旅产业 | 大公司简报
- []天天新消息丨特锐德:有一定的出口外销,但对公司充电业务总收入的影响不大
- []全民推方块好玩吗 全民推方块玩法简介
- []世界信息:qdll基金是什么意思
- []股票分红分的是不是自己的钱
- []新股申购可以撤单吗
- []当前滚动:赵薇娱乐公司叫什么
- []做空为什么跌了还赚钱
- []【世界快播报】中国在台海军演可不是“炸鱼”,而是炸台独的心和胆,矫正美台对台海形势的预期
- []天天时讯:仅租金收入就高达百亿 新城控股连续五年经营性现金流净流入
- []视讯!企业为什么选择在科创板上市
- []【全球新要闻】TE Connectivity @2023年储能国际峰会暨展览会
- []长城是由谁建造的
- []【环球报资讯】创业板指数基金有哪些
- []跨国公司有哪些
- []今日热讯:工银价值是什么基金
- []保障额度是什么意思,保险金额
- []环球关注:被车撞了怎么跟保险公司沟通赔偿,有以下四步
- []当前资讯!社保买两年不买可退回钱吗,满足条件可以退
- []环球短讯!新能源汽车自燃保险公司赔付吗,购买了自燃险会赔付
- []私企有公积金吗,有
- []【环球时快讯】直击现场!沃太能源亮相北京ESIE展,"新一代"能源技术备受瞩目!
- []环球新消息丨a股和美股哪个适合散户
- []每日短讯:深化储能业务布局 首航携光储系统解决方案亮相ESIE2023
- []【独家】杠杆效应是什么
- []注册制有什么特点
- []风投基金是什么意思
- []“数”说数字政府建设“山东样本”
- []今日热议:ipo啥意思
- []创业板和科创板的区别
- []震荡股票怎么操作
- []环球播报:龙腾光电荣膺电博会金奖,卓越技术引领行业
- []前沿热点:股市大跌的原因
- []天天快消息!权重股是指哪些股票
- []权重股什么意思
- []观点:交通运输部部署开展2023年中国航海日活动
- []世界滚动:“豫”见恐龙骨架化石数字作品限量发行
- []腾讯视频与抖音达成合作,推动长短视频融合发展
- []每日信息:3600亿巨头出手!联手两大新能源公司,要干这件大事
- 世界热头条丨K8s安装部署怎么操作?K8S集群安装部署及操作说明
- 焦点速读:米老鼠微信主题红包怎么玩?米老鼠微信主题气泡设置教程方法
- 每日速讯:联想平板android版本怎么升级?联想乐Pad A1平板安卓4.0升级操作详细教程
- 微速讯:知识点补充:什么是互质?互质的详情介绍
- 局域网上任意主机怎么控制?软件实现局域网流量控制
- 最新消息:怎么申请miui12.5内测版本?miui12.5内测答案是什么?
- 如何用指针申请动态内存?函数的参数是一个指针吗?
- 全球新资讯:合肥今起恢复公积金异地贷款
- 【世界播资讯】郑州公布2023年680个市重点建设项目名单 总投资1.08万亿元
- 今日热搜:深圳罗湖区发放5000万购车补贴 个人最高获10万元补贴
- B站注册资本增幅400%至5亿 目前由陈睿全资持股
- 光源资本出任独家财务顾问 沐曦集成电路10亿元A轮融资宣告完成
- 巨轮智能2021年上半年营收11.24亿元 期内研发费用投入增长19.05%
- 红枣期货尾盘拉升大涨近6% 目前红枣市场总库存约30万吨
- 嘉银金科发布2021年Q2财报 期内净利润达1.27亿元同比增长208%
- 成都银行2021上半年净利33.89亿元 期内实现营收同比增长17.27亿元
- 汽车之家发布2021年第二季度业绩 期内新能源汽车品牌收入增长238%
- 中信银行上半年实现净利润290.31亿元 期末不良贷款余额706.82亿元
- 光伏概念掀起涨停潮交易价格创新高 全天成交额达1.29亿元
- 上半年生物药大增45% 关键财务指标好转营收账款持续下降
- 【全球速看料】这群HUSTer,在山沟沟里种出“金坨坨”!
- 焦点短讯!买瓶洗发水送女票
- 国潮吸引创业者
- 每日报道:李国庆羡慕周鸿祎平和离婚背后,与俞渝离婚大战鸡飞狗跳
- 阳光车险为啥便宜,阳光车险的理赔流程有哪些
- 配置占比大幅提升 机构频频现身科创板股
- 环球微资讯!股票行情快报:天元股份(003003)4月7日主力资金净买入55.04万元
- 中交地产2022年收入385亿?较上年增长164.52%
- 天天快报!LG化学金惠子:中国医美市场潜力巨大,高端市场尤需持续发力
- 天天报道:中交地产2022年净利润0.34亿元丨年报快讯
- 快讯:苏宁环球披露前期会计差错更正 涉及2021年度末未分配利润数据
- 天天观热点:新能源车险保费大增背后:赔付率超油车,行业如何提升利润?
- 天天新消息丨专访陆家嘴董事长徐而进:集团优质资产注入 三年内预计预收款项近400亿元
- 每日热讯!3月上海二手房成交套数达20个月新高:挂牌量充足,价格稳定
- 环球观察:专访:对中国经济长期向好充满信心——访美敦力全球高级副总裁顾宇韶
- 每日关注!招商蛇口一季度签约销售金额722.66亿元 同比增长超五成
- 当前快讯:严跃进:新力退市、蓝光预警,防范房企债务危机演变为股市危机
- 机构评3月非农:美国就业增长虽降温,但美联储5月加息不可避免?
- 云海金属:青阳项目按计划是今年投产
- 世界要闻:湖北能源:公司信息披露严格按照监管部门相关要求办理,无应披未披事项
- 全球百事通!运动品牌“双雄”安踏、李宁“失速”,成长性陷入瓶颈,高端化困难重重
- 国内游热度走高,全国多地知名景区官宣免票
- 城投控股一季度主要房地产项目新增签约金额4570万元
- 金融街预计2023年与控股股东关联交易不超3.1亿
- 当前短讯!郑州楼市再放大招!公积金最高可贷100万
- 天天百事通!天健集团按比例支付深圳坪山土地价款?代价4.84亿元
- 世界今日报丨鱼跃医疗:公司会根据对应产品所处阶段、业务推广的进度,合理安排产能配置
- 天天快看点丨融创房地产等被执行超12亿 融创房地产3天被执行69次
- 通裕重工:国有控股后,公司树立了“打造国际一流的能源装备制造商及知名的功能材料供应商”的战略目标
- 世界视讯!欧普康视:公司不是AI类企业,产品中会根据需要吸收采用必要的AI技术
- 世界观焦点:国任财险副总经理马昌明任职资格批复
- 民生银行参展“第十一届国际储能峰会”并举办“聚力储能 和合共生”金融论坛
- 财信发展为4家子公司提供181.03万元担保
- 全球播报:香江控股2022年营收60.55亿元 销售金额24.41亿元
- 头条焦点:振邦智能:目前微逆产品已完成样机的测试,目前正在进行型式测试、并网测试等,争取早日通过认证
- 今日关注:粤海股份:城启集团等五家企业破产清算案获得通过
- 中国电影前三月票房119亿 《流浪地球2》累计40.26亿
- 当前看点!陕天然气:公司目前正在开展天然气贸易前期准备工作,积极对接相关方,实质性贸易业务暂未开展
- 天天看点:香江控股:2022年营业收入为60.55亿元
- 热点聚焦:安徽首创“纳税信用绿卡” 将在长三角地区推广应用
- 告别日烧3亿的困局,三大航今年能否实现盈利?
- 财面儿丨合生创展:前3月实现合同销售额100.67亿元 同比增长25.5%
- 合肥百货:2022年归母净利润下降7.3%
- 焦点热门:招商蛇口完成发行10亿短期融资券 利率2.2%
- 新消息丨中环股份(002129.SZ):2020年度归母净利升20.51%至10.89亿元 拟10派0.6元
- ST泰禾:太原金尊府项目在属地政府及相关机构的大力支持和协助下,正在积极推进复工前期的各项工作
- 全球新资讯:郑州:承租公租房、保租房的家庭公积金提取金额最高可为3.6万元
- 环球最资讯丨兆威机电:公司积极把握汽车自主品牌和新能源汽车的发展机遇,充电枪锁驱动系统项目按计划稳步推进中
- 成渝双城首届社会办医创新发展大会在渝举行
- 环球新动态:直击现场!马应龙亮相世界大健康博览会
- 资讯推荐:新加坡旅游业等来了中国游客
- 微速讯:安徽高速地产9.51亿元资产支持ABS已获反馈
- 新消息丨中交地产:成功发行7亿元公司债券
- 全球热文:中国铁建拟挂牌转让3家项目公司股权 涉及四川成都、江苏淮安等地
- 今头条!浙江中成房地产4.79亿元竞得绍兴1宗地块
- 焦点关注:国电南自:市值管理核心是不断优化上市公司的资产质量和做优经营业绩以实现价值提升
- 环球快报:宏盛股份:股市有风险,入市需谨慎
- 京东拍卖春季法拍节开启 房产5.6折起拍、豪车7折起拍
- 突发!千亿黑马房企退市,此前老板“退出群聊”吓坏债权人
- 环球视点!南都物业:公司按要求定期披露股东户数,敬请留意定期报告相关内容
- 雁栖湖健康发展论坛在京召开
- 天天新动态:黄金比例身材是几几分
- 观热点:基金回报率一般多少
- 天天日报丨房地产板块涨幅第一!美女私募回应:这个锅我不背!
- 证券大涨是牛市到了吗
- 当前简讯:股息分红是利好吗
- 微动态丨上海第一家试行股份制经营的公司是
- 热点在线丨绍兴发布总额6000万元政府消费券 按“先申领后抽签”模式进行
- 每日快讯!津惠保是什么保险,普惠型补充医疗险
- 天天百事通!中南置地:2023年第一季度累计交付1.5万套房屋
- 世界焦点!电子医保卡第一次怎么用,有以下六个步骤
- 北京洛娃大厦二次拍卖流拍 当前价7.67亿元
- 焦点资讯:房地产板块走强 天保基建涨停
- 焦点信息:绿城水务(601368)4月7日主力资金净买入178.16万元
- 【全球播资讯】农村社会养老保险怎么买最划算,有以下两点
- 4月7日西子洁能涨停分析:光热发电,创投,钒电池概念热股
- 环球今热点:中国人寿生存金多久拿一次,三年或是一年领取一次
- 订单险买家退货怎么赔,赔付的是商品的价格
- 【环球报资讯】4月7日麦格米特涨停分析:呼吸机,智能制造,充电桩概念热股
- 4月7日首药控股涨停分析:创新药,医药概念热股
- 4月7日三维化学涨停分析:光热发电,异丙醇,石油化工概念热股
- 环球报道:回落是上升还是下降
- 券商龙头股票有哪些
- 未成年可以炒股吗
- 环球微速讯:macd顶背离和底背离是什么
- 世界消息!股份制银行有哪些
- 铸储能品质标杆|晶科能源新一代SunGiga液冷工商业储能解决方案重磅来袭
- 钱小乐:是“借钱三巨头”之一,也是小而美的信贷新星
- 世界实时:浙江湖州:2023年将再增1.53万套保障性租赁住房
- 【世界速看料】天力锂能:碳酸锂价格持续下跌,影响到下游采购需求,直接影响到订单下滑,导致开工率下降
- 焦点快播:专家称金价创新高只是时间问题,短期须警惕3月就业和通胀报告
- 世界快看:中国金茂一季度签约增幅40% 产品+服务筑基精益发展底盘
- 万达地产集团新增两则被执行人信息,执行标的近10.87亿元
- 京东京造正式布局元宇宙 打造"京造元宇宙"虚拟世界
- 天天日报丨京东京造正式布局元宇宙 打造"京造元宇宙"虚拟世界
- A股电影娱乐板块走强 上海电影涨停、华谊兄弟、博纳影业等上扬
- 全球看点:英镑见顶了?机构反驳:还有200点上涨空间
- 世界热文:浙农股份:公司在浙江省嘉善县西塘镇开展现代粮食产业园建设,打造未来耘农场,目前种植有万亩水稻
- 快消息!银行卡里边定期的钱可以转活期吗
- 世界今日讯!诺基亚市值最高峰多少