C/C++内存管理上

C/C++通过分区管理内存
 
只是软件层面会分区,硬件不会分区

易错点

数组名在栈,const修饰的变量名也在栈上
const int a=0;//a在栈上

内存管理小题


 
答案:
CCCAA
AAADAB

*char2为什么在栈上而不是常量区?

因为下列语句对应的操作是将常量区的“abcd"memecpy到栈上并用char2指向栈上该空间

char char2[] = "abcd";

tips:

cout不能打印char* /string*,会自动识别为指向的空间,

此功能只限于指向字符串的指针

C++空间申请/释放

new/delete主要是为了类和对象设计的

特点:

  • new出来的指针不用检查,因为new失败的话会抛异常,系统自动识别
  • new=malloc+构造函数
  • delete=析构函数+free
  • operator new和malloc差别:前者会抛异常
  • new部分初始化时,剩下的自动初始化为0

C和C++内存申请/释放,除了用法方面,对于内置类型没啥区别
申请时都不会初始化(但new可以初始化)

对于自定义类型
new更方便(类名后传参)

new/delete多个须多参数构造的对象的用法:

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值