You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否可以按照如下方式在堆内存中分配struct结构体?

你给出的代码可以正确完成struct Rectangle的堆内存分配,是合法的C++实现,运行后可以正常输出你赋值的20。

补充说明

  • 你定义的Rectangle是无自定义构造函数的聚合类型,new Rectangle会在堆上申请恰好等于sizeof(Rectangle)大小的内存空间,将首地址赋值给指针p的操作完全符合C++语法规则。
  • 当前写法用的是默认初始化逻辑,结构体中的int类型成员length、breadth不会被自动清零,会保留申请到的内存块的原有脏值。你手动给p->length赋值20之后再访问是安全的,但如果未赋值就直接访问p->breadth会触发未定义行为。
  • 如果需要分配内存的同时自动将所有成员初始化为0,可以把分配语句改成p = new Rectangle();,这种值初始化的写法会把所有内置类型的成员自动赋值为0。
  • 堆上申请的内存使用完成后需要手动调用delete p;释放,否则会出现内存泄漏问题。

内容的提问来源于stack exchange,提问作者Izaz Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:54:02