首页 > 编程语言 >C++栈上创建对象和堆上创建对象

C++栈上创建对象和堆上创建对象

时间:2023-02-19 11:13:39浏览次数:27  
标签:pStu 对象 创建对象 C++ 栈上 int Student delete

一、在栈(Stack)上创建对象

Student是一个类,创建一个实例化对象:

Student stu;

下面进行创建对象指针的操作(非必须):

上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址:

Student *pStu = &stu;

pStu 是一个对象指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。

 

二、在堆(heap)上创建对象

Student *pStu = new Student;

栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。在实际开发中,new 和 delete 往往成对出现,以保证及时删除不再使用的对象,防止无用内存堆积。

 

下面展示一个创建一个数组的写法:

int *p = new int[10];  //分配10个int型的内存空间
delete[] p;

 

标签:pStu,对象,创建对象,C++,栈上,int,Student,delete
From: https://www.cnblogs.com/spacerunnerZ/p/17134358.html

相关文章

  • 如何一眼分辨是C还是C++
    C语言的历史​C语言是由贝尔实验室的DennisRitchie在20世纪70年代初开发的一种通用程序设计语言。在早期的计算机时代,许多计算机使用不同的汇编语言编写程序,这导致了程序的......
  • C++基于面向对象思想的ATM 系统设计与实现(三级项目)[2023-02-19]
    C++基于面向对象思想的ATM系统设计与实现(三级项目)[2023-02-19]实验二基于面向对象思想的ATM系统设计与实现(三级项目)一、实验目的:(1)掌握派生类的使用方法。(2)......
  • PAT-basic-1025 反转链表 java c++
    一、题目给定一个常数 K 以及一个单链表 L,请编写程序将 L 中每 K 个结点反转。例如:给定 L 为1→2→3→4→5→6,K 为3,则输出应该为3→2→1→6→5→4;如果 K ......
  • CodeRunner支持C++11
    1、打开设置2、添加C++113、测试以下代码,运行成功即可#include<cstring>#include<cstdio>#include<iostream>#include<iostream>#include<tuple>#include<......
  • C++关键字
    一、overrideoverride的翻译是覆盖。实际上它在C++中可以检测哪些虚函数没有被重写并报错注:在派生类的成员函数中使用override时,如果基类中无此函数,或基类中的函数并不是......
  • C++的库管理工具:vcpkg
    vcpkg的安装gitclone"地址"添加环境变量在vcpkg目录下/vcpkg/bootstrap-vcpkg.bat嵌入VS在CMD或POWERSHELLvcpkgintegrateinst......
  • Centos7中配置c++开发环境
    Centos7中配置c++开发环境c++不像Java等语言是跨平台的,在Windows开发之后,在Linux直接部署就行了,而是需要在Linux中进行开发和调试,那怎么在Windows系统里面模拟一个Linux的......
  • c++ 待自我实现的基础组件
    内存池ringbuffer定时器rbtree原子操作共享内存slab文件操作elf文件解析死锁检测内存泄漏网络框架,epoll异步请求,redis,sql连接池线程池,日志相关协议......
  • PAT-basic-1015 德才论 java c++
    一、题目宋代史学家司马光在《资治通鉴》中有一段著名的“德才论”:“是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人。凡取人之术,苟不得圣人,君子而......
  • c++ 11 lamda 如何实现 linq 中 先 where 再 select 的功能
    面向AI编程,回答如下:在C++11中,可以使用lambda表达式和算法库中的std::copy_if和std::transform算法来实现LINQ中先where再select的功能。具体来说,可以先使用......