指针·堆内存分配(动态内存)

本文介绍了动态内存分配的概念,对比了C语言中的malloc和free与C++中的new和delete。强调了在编译时无法确定数组大小的情况下,如何在运行时通过堆内存分配来创建数组。同时,文章提到了内存分配失败的判断及处理,以及动态分配内存后手动删除的重要性。
摘要由CSDN通过智能技术生成

一、对于普通数组来说,在定义或初始化时必须确定元素个数,即下标必须是已知的,即在编译时已知。

例:定义数组时 int a[6];
      初始化数组时,float a[]={12.3,89.6,-12.56,3.9};
      对数组a来说,虽然没有下标,但是通过{}中的元素个数,可以查出其下标为4。

像这样的格式:
      int a[];                                   错误,下标未知
      int a[n];                                 错误,同上
      int m=10; int a[m];              错误,m是变量,在编译时未知

对于下面格式:
    const int size=50;
    const int  chs=size*sizeof(int);
    int a[size];
    char  s[chs];
    由于size和s是常量,它们在编译时可知,所以格式正确。
    所以常量可以作为下标。

二、通过堆内存分配,可以在定义或初始化时不必确定确定元素个数,即在编译时不知,而在运行时已知。

 1、使用malloc和free

其语法要求:
(1) #include<alloc.h>
(2) 指针名=void* malloc (内存大小);
(3) free(指针名);

说明:
(1)其中的void*为默认类型,表明这个内存空间类型不确定。如果要确定其类型,则必须进行强制类型转换。
(2)内存的大小可以直接写出,也可以通过元素个数乘以sizeof(type)计算。

例1:

#include < iostream.h >
#include
< alloc.h >

void  main(
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电脑小玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值