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

深圳办公室设计公司排名长沙网站seo源头厂家

深圳办公室设计公司排名,长沙网站seo源头厂家,明空网络做网站好不好,空间网站购买目录 一、内存分区模型二、内存分区代码示例三、new 运算符详解 一、内存分区模型 C程序在运行时,将内存分为四个区域,不同的区域赋予不同的生命周期,以提供强大的灵活编程。 代码区:存储程序的二进制代码,通常是只读…

目录

  • 一、内存分区模型
  • 二、内存分区代码示例
  • 三、new 运算符详解

一、内存分区模型

C++程序在运行时,将内存分为四个区域,不同的区域赋予不同的生命周期,以提供强大的灵活编程。
代码区:存储程序的二进制代码,通常是只读的,以防止程序意外修改自身的指令,且是共享的,以减少内存消耗。
全局区:存储全局变量、静态变量和常量,包括已初始化和未初始化的数据。该区域中的数据在程序运行期间一直存在,结束后由操作系统回收。
堆区:由程序员手动分配释放内存。可以使用 new 运算符在堆区分配内存,使用 delete 运算符释放内存。堆区中的数据生命周期由程序员控制,若程序员不释放,则在程序结束时由操作系统回收。
栈区:由编译器自动分配和释放内存,用于存储局部变量函数调用时的参数,栈区中的数据生命周期与函数调用相关。

二、内存分区代码示例

#include <iostream>
using namespace std;// 全局变量,存储在全局区
int g_var = 10;// 静态变量,存储在全局区
static int s_var = 20;// 字符串常量,存储在全局区
const char *str = "Hello, world!";// 常量变量,存储在全局区
const int c_var = 30;// 函数,存储在代码区
void func() {// 局部变量,存储在栈区int a = 10;// 动态分配内存,存储在堆区int *p = new int;*p = 20;cout << "a: " << a << endl;cout << "*p: " << *p << endl;// 释放动态分配的内存delete p;
}int main() {// 调用函数func();return 0;
}

在上面的代码中,当程序开始运行时,操作系统会为程序分配内存空间。其中,代码区用于存储程序的二进制代码;全局区用于存储全局变量、静态变量和常量;堆区和栈区初始为空。

当程序进入 main 函数时,栈区会分配一些空间用于存储函数调用时的参数和返回地址。然后,程序调用 func 函数,在栈区再次分配一些空间用于存储函数调用时的参数和返回地址。

在 func 函数中,定义了一个局部变量 a,它会被分配到栈区中。同时,使用 new 运算符动态分配了一块内存,并使用指针 p 指向它,这块内存会被分配到堆区中。最后,在函数结束前使用 delete 运算符释放了动态分配的内存。
func 函数执行完毕后,栈区中为该函数分配的空间会被自动释放。然后,程序返回到 main 函数,并继续执行。当 main 函数执行完毕后,栈区中为该函数分配的空间也会被自动释放。最后,程序结束运行,操作系统会回收为程序分配的所有内存空间。

三、new 运算符详解

new 运算符是 C++ 中用于在堆区动态分配内存的运算符。它可以用来为单个变量或数组分配内存,返回指向分配内存的指针。例如:

int *p = new int; // 在堆区分配一个 int 类型的内存
int *arr = new int[10]; // 在堆区分配一个长度为 10 的 int 类型数组

使用 new 运算符分配的内存需要使用 delete 运算符进行释放,否则会容易造成内存泄漏。例如:

delete p; // 释放 p 指向的内存
delete[] arr; // 释放 arr 指向的数组内存

new 运算符还可以与构造函数一起使用,用来初始化动态分配的对象。例如:

class MyClass {
public://value(x) 是构造函数的初始化列表中的一条语句,它用于初始化类的成员变量 value。MyClass(int x) : value(x) {}int value;
};MyClass *p = new MyClass(10); // 在堆区分配一个 MyClass 对象,并调用构造函数进行初始化
cout << p->value << endl; // 输出 10
delete p; // 释放 p 指向的内存

此外,new 运算符还支持定位 new,允许在指定的内存地址上构造对象。例如:

char buffer[100];
MyClass *p = new (buffer) MyClass(10); // 在 buffer 的地址上构造一个 MyClass 对象
cout << p->value << endl; // 输出 10
p->~MyClass(); // 调用析构函数销毁对象
http://www.ds6.com.cn/news/15490.html

相关文章:

  • 做网站的开题报告怎么写美国最新消息今天 新闻
  • 做家装的网站谷歌seo和百度seo区别
  • thinkphp网站建设课程搜索引擎优化的核心本质
  • 新手如何做海外网站代购百度手机助手下载2022新版
  • 临沂网站建设培训学校深度搜索
  • 橘子皮主题wordpresssemseo
  • 北京网站设计公司youx成都柚米科技15bilibili推广网站
  • 汽车之家网站是怎么做的神马网站快速排名软件
  • 安徽省工程建设信息网站襄阳seo培训
  • 支付网站费怎么做会计分录免费二级域名分发网站源码
  • 网站为什么做301全国疫情一览表
  • 新媒体公司网站怎么做百度小说风云排行榜
  • 怎么设置自己做的网站吗搜索关键词的软件
  • ecms网站开发论文品牌推广策划方案怎么写
  • 做批手表批发发的网站网站推广应该坚持什么策略
  • 做网站小编怎么样网站建设黄页
  • 户网站建设的不全.互联网营销师报名入口
  • 长沙专业公司网站建设源头网络软文名词解释
  • 湖南电商网站建设做网络推广怎么找客户
  • 织梦网站背景音乐北京seo优化哪家好
  • 中国网站建设公司网络热词2022流行语及解释
  • 网站程序开发技术长安网站优化公司
  • iis 网站 起不来 temp文件夹黑帽seo联系方式
  • 建站abc网站地图seo网站关键词优化怎么做
  • 卖狗做网站什么关键词最好企业推广软文
  • 装修网站怎么做推广指数基金投资指南
  • 丹阳网站制作个人网页免费域名注册入口
  • 搜索引擎广告形式有哪些优化百度百科
  • 比较好的设计网站推荐百度seo
  • 网站搭建周期怎么建立自己的网站