当前位置: 首页 > article >正文

C++中 ,new int(10),new int(),new int[10],new int[10]()

在C++中,使用new关键字进行动态内存分配时,可以根据需要初始化分配的内存。以下是您对new操作符使用的几种情况的解释:

  1. new int(10)
    • 这行代码分配了一个int类型的单个内存空间,并将其初始化为10
    • 等价于在栈上声明并初始化一个变量:int x = 10;,但这里的变量x是在堆上分配的,需要使用指针来访问它。
    • 示例:
      int* ptr = new int(10);
      std::cout << *ptr << std::endl; // 输出:10
      delete ptr; // 释放内存
  2. new int()
    • 这行代码分配了一个int类型的单个内存空间,但不对其进行显式初始化,其值将是未定义的(通常是随机值,取决于内存的状态)。
    • 等价于在栈上声明一个未初始化的变量:int x;,但这里的变量x是在堆上分配的。
    • 示例:
      int* ptr = new int();
      std::cout << *ptr << std::endl; // 输出:未定义的值
      delete ptr; // 释放内存
  3. new int[10]
    • 这行代码分配了一个包含10个int类型元素的数组,但不对这些元素进行显式初始化,它们的值将是未定义的。
    • 等价于在栈上声明一个未初始化的数组:int arr[10];,但这里的数组arr是在堆上分配的。
    • 示例:
      int* arr = new int[10];
      // arr[0] 到 arr[9] 都是未定义的值
      delete[] arr; // 释放内存
  4. new int[10]()
    • 这行代码分配了一个包含10个int类型元素的数组,并将所有元素初始化为0(对于基本类型如int,默认初始化就是将其值设为0)。
    • 等价于在栈上声明并初始化一个数组:int arr[10] = {0};,但这里的数组arr是在堆上分配的。
    • 示例:
      int* arr = new int[10]();
      for (int i = 0; i < 10; ++i) {
          std::cout << arr[i] << " "; // 输出:0 0 0 0 0 0 0 0 0 0
      }
      std::cout << std::endl;
      delete[] arr; // 释放内存

注意事项:

  • 使用new分配的内存必须使用delete(对于单个对象)或delete[](对于数组)来释放,以避免内存泄漏。
  • 初始化数组时,使用括号()表示使用默认构造函数或值初始化(对于基本类型,如int,就是将其值设为0)。对于类类型的数组,这还会调用每个元素的默认构造函数。

http://www.kler.cn/a/395781.html

相关文章:

  • Uniapp踩坑input自动获取焦点ref动态获取实例不可用
  • SpringCloud基础 入门级 学习SpringCloud 超详细(简单通俗易懂)
  • AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码
  • 使用热冻结数据层生命周期优化在 Elastic Cloud 中存储日志的成本
  • mysql每日一题(上升的温度,date数据的计算)
  • 11. 观光景点组合得分问题 |豆包MarsCode AI刷题
  • 除了网页标题,还能用爬虫抓取哪些信息?
  • 实时数据流的革命:分布式数据库的挑战与实践
  • 图像处理之cornerdetection(角点检测)综述
  • 从cityengine到unreal,游戏引擎助力城市设计
  • Linux服务器下连接kingbase并执行SQL的脚本
  • 关于指针对象的问题
  • 搜维尔科技:TOUCH力反馈设备睿尔曼机械臂,遥操作机械臂
  • 实现 Toy-React , 实现 JSX 渲染
  • 通过css的哪些方式可以实现隐藏页面上的元素?
  • spark的学习-05
  • Java中的集合类与线程安全的讨论
  • ETLCloud支持的数据处理类型包括哪些?
  • ubuntu docker里面安装Omniverse Launcher不能登陆
  • 【Elasticsearch】01-ES安装
  • node对接ChatGpt的流式输出的配置
  • Apache Doris:深度优化与最佳实践
  • Dev C++ 无法使用to_string方法的解决
  • shell编程(2)永久环境变量和字符串显位
  • 利用云计算实现高效的数据备份与恢复策略
  • 使用 DBSCAN(基于密度的聚类算法) 对二维数据进行聚类分析