c++基础知识9——动态内存分配

c语言和c++在 动态内存分配 方面的区别:
1.c语言用malloc函数实现;c++用new关键字来实现。
2.malloc是由c库提供的函数;new关键字是c++的一部分。(也就是说一些简单的c语言平台可能没有malloc库,也就无法支持动态内存分配。而c++则任何情况都可用)
3.malloc是以字节为单位进行内存分配;new是以具体类型为单位进行分配。
4.malloc在分配内存的时候不支持数据初始化;new支持同时分配和初始化数据。

举例1:
定义一个int型指针p,该指针指向一个动态分配的空间,则可用:

int* p = new int; //分配动态内存
delete p; //释放该空间

举例2:
定义一个int型数组p[],该数组有5个元素,则可用:

int* p = new int[5]; //分配动态内存
delete[] p; //释放该数组,这里如果遗漏[]会导致除第一个元素外,其它的元素都没有释放,从而导致内存泄漏。

举例3:
new关键字初始化

float* f = new float(2.0f);	//分配动态内存,同时初始化为2.0f

c++是种强类型语言,做赋值运算的时候其实等号两边的类型都是确定的。要想赋值成功,要么两边类型一致,要么两边类型具备某种关系(继承或者实现)。浮点类型的字面量类型默认是double,由于float类型和double类型在内存中的二进制表现形式不同,不能像整型那样有时会默认转换,必须要确定类型,带上f。

考点1:
int* p1 = new int(2); 和 int* p2 = new int[2]; 的区别?
答:
p1指向一个动态分配的空间,该空间被初始化为2;
p2指向一个动态分配的数组空间,该数组有两个元素。

考点2:
int* p= new int[10]; 这里p指向的内存占用多大空间?
答:至少40个字节,因为动态申请的内存空间可能比实际需要的大一点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值