C++:全局变量作为指针

2024-03-17

我是 C++ 新手,对全局变量有一个问题。我在许多示例中看​​到全局变量是带有堆地址的指针。所以指针位于全局/静态变量的内存中,地址后面的数据位于堆上,对吗?
相反,您可以声明存储数据的全局(无指针)变量。因此,数据存储在全局/静态变量的内存中,而不是存储在堆上。
与第一个使用指针和堆的解决方案相比,这个解决方案有什么缺点吗?

Edit:
第一个解决方案:

//global 
Sport *sport;
//somewhere
sport = new Sport;

第二种解决方案:

//global
Sport sport;

将数据存储在全局/静态变量中的缺点是,大小在编译时是固定的,并且不能更改,这与堆存储不同,堆存储的大小可以在运行时确定,并在运行过程中反复增大或缩小。全局/静态变量的生命周期也固定为程序从开始到结束的完整运行,而不是在堆存储中,在堆存储中可以在整个程序运行时获取和释放(甚至重复)变量。另一方面,全局和静态存储管理均由编译器为您处理,而堆存储必须由您的代码显式管理。综上所述,全局/静态存储更容易,但不如堆存储灵活。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++:全局变量作为指针 的相关文章

  • 为什么存在 async 关键字

    浏览 msdn 9 频道视频时 我发现以下未答复的评论 希望有人能解释一下 我不明白 async 关键字的意义 为什么不直接允许 任何时候方法返回任务时都会使用await关键字 就像迭代器一样 可以在任何返回 IEnumerable 的方法
  • 分段错误(核心转储)错误

    我的程序编译罚款 但在输入文件时出现 分段错误 核心转储 错误 我没有正确处理 ostream 吗 include
  • 内联函数/方法

    声明 内联函数必须在调用之前定义 这个说法正确吗 EDIT 该问题最初是德语 内联功能穆森 弗 伊赫雷姆 奥夫鲁夫定义 sein 也许它对任何人都有帮助 是的 它是正确的 但只是部分正确 它可能正确地重新构建如下 内联函数必须在每个翻译单位
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如
  • System.IO.IOException:由于意外>数据包格式,握手失败?

    有谁知道这意味着什么 System Net WebException 底层连接已关闭 发送时发生意外错误 gt System IO IOException 由于意外 握手失败 数据包格式 在 System Net Security SslS
  • 为什么Apache MPM prefork.c 使用互斥体来保护accept()?

    我坐下来读书Apache 的 MPM prefork c http code metager de source xref apache httpd server mpm prefork prefork c这段代码使用了一个名为accept
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • C++中delete和delete[]的区别[重复]

    这个问题在这里已经有答案了 可能的重复 C 中的删除与删除 运算符 https stackoverflow com questions 2425728 delete vs delete operators in c 我写了一个包含两个指针的
  • 如何生成 appsettings..json 文件?

    我有一个 ASP NET Core 2 WebAPI 它将部署在以下环境中 INT QA STAGE 生产环境 基于上述 我需要有appsettings
  • HttpWebRequest vs Webclient(特殊场景)

    我知道这个问题之前已经回答过thread https stackoverflow com questions 1694388 webclient vs httpwebrequest httpwebresponse 但我似乎找不到详细信息 在
  • TcpClient 在异步读取期间断开连接

    我有几个关于完成 tcp 连接的问题 客户端使用 Tcp 连接到我的服务器 在接受客户端后listener BeginAcceptTcpClient ConnectionEstabilishedCallback null 我开始阅读netw
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • 两种类型的回发事件

    1 我发现了两篇文章 每篇文章对两种类型的回发事件的分类都略有不同 一位资源说两种类型的回发事件是Changed事件 其中控件实现 IPostbackDataHandler 当数据在回发之间更改时触发 然后Raised事件 其中控件实现 I
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • 从成员函数指针类型生成函子

    我正在尝试简化 通过make fn 预处理参数的函子的生成 通过wrap 对于 arity 的成员函数n 生成函子基本上可以工作 但到目前为止只能通过显式指定成员函数的参数类型来实现 现在我想从它处理的成员函数类型生成正确的函子 struc
  • libxml2 xmlChar * 到 std::wstring

    libxml2似乎将所有字符串存储在 UTF 8 中 如xmlChar xmlChar This is a basic byte in an UTF 8 encoded string It s unsigned allowing to pi
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • .NET 客户端中 Google 表格中的条件格式请求

    我知道如何在 Google Sheets API 中对值和其他格式进行批量电子表格更新请求 但条件格式似乎有所不同 我已正确设置请求 AddConditionalFormatRuleRequest formatRequest new Add
  • 初始化 LPCTSTR /LPCWSTR [重复]

    这个问题在这里已经有答案了 我很难理解并使其正常工作 基本上归结为我无法成功初始化这种类型的变量 它需要有说的内容7 2E25DC9D 0 USB003 有人可以解释 展示这种类型的正确初始化和类似的值吗 我已查看此站点上的所有帮助 将项目
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过

随机推荐

  • 缩放 Windows 窗体

    基本上 我希望在通过拖动调整 WindowsForm 大小时 所有内容 控件等 都能随 WindowsForm 一起缩放 以便用户可以自己确定 UI 的大小 图片并不完美 但我希望它能解释这一点 最简单的方法是使用 Flow Table L
  • 从 PixelFormat 获取像素长度

    我如何获取像素长度 以字节为单位 像素格式 http msdn microsoft com en us library system drawing imaging pixelformat aspx枚举 我想使用本机方法处理图像像素 但是如
  • 类型错误:必须是 pygame.Surface,而不是元组。 Python/Pygame 菜鸟

    堆栈溢出的用户您好 我已经编写了这段代码 它会在您单击 pygame 屏幕时绘制线条 但是当我运行该程序时 我收到一条错误消息 TypeError must be pygame Surface not tuple 我试图搞乱这个程序 但我没
  • Python:从文件创建列表

    因此 我尝试创建一个函数来打开一个文本文件 逐行读取它 然后获取从中提取的数据来创建一个列表 def file open filename str input enter file name for perk py to sort thro
  • 轮询和事件驱动编程是同一种技术的不同说法吗?

    我研究了中断与循环轮询 并了解了不必等待轮询的中断的优点 在我看来 轮询就像事件驱动的编程 或者至少类似于侦听器 而轮询的作用实际上很像侦听输入或输出 您同意还是我误解了轮询 循环监听 和事件驱动编程 也用所谓的监听器监听 之间的任何关键区
  • C++ 变体访问重载函数

    我想在变体上执行重载函数 以下代码块可以工作并编译 但是visit调用似乎过于复杂 为什么我不能简单地写 std visit f something 工作版本和上下文 include
  • 扩展内联汇编中的约束“Rah”和“Ral”意味着什么?

    这个问题的灵感来自于另一个论坛上有人提出的问题 在下面的代码中 扩展内联汇编约束是什么Rah and Ral意思是 我以前没见过这些 include
  • Android:获取基站和邻近小区的小区 ID 和 RSS

    我正在尝试获取以下数据 基站 CellID和RSS 识别哪个是基站 对于所有邻近站点 小区 ID 和 RSS 有各种 API 看起来我必须使用不同的 API telephonyManager 和 PhoneStateListener 我有点
  • 如何使用 Composer 初始化 Symfony 控制台项目,以限制其坚持使用长期发行版本?

    我的目标是经营作曲家require命令来初始化 Symfony Console 项目 当运行作曲家的require命令 我相信可以将所需的包限制为特定版本 我正在考虑使用它来坚持 Symfony 的长期发行版本 它将支持更长时间 根据Sym
  • ExtJS 4:单击按钮后替换视口项目数组中的两个组件

    下面是一些单击按钮后即可运行的代码 当我在另一个按钮中再次设置 视图 变量 对于不同的按钮 并使用不同的网格和不同的表单运行这个确切的代码时 这两个项目完全消失 为什么它在第一次迭代时运行 但在第二次迭代时不运行 更重要的是 我怎样才能正确
  • 按元素有效比较 numpy 数组与其自身

    我正在执行大量这些计算 A A np newaxis T 其中 A 是一个密集的 numpy 数组 通常具有共同的值 为了进行基准测试 我们可以使用 n 30000 A np random randint 0 1000 n A A np n
  • Angular 2 服务 + RxJS BehaviourSubject 或 EventEmitter

    我是 Angular 2 和 RXJS 的新手 我有一个带有 2 个触发器 按钮 的自定义标头组件 它应该在应用程序的不同部分激活 2 个不同的导航指令 我创建了一个服务 它注册了 2 个不同的导航指令 并且标头组件订阅了该指令 我想知道链
  • 类型错误:get_params() 缺少 1 个必需的位置参数:'self'

    我试图使用scikit learn与 python 3 4 一起打包以进行网格搜索 from sklearn feature extraction text import TfidfVectorizer from sklearn linea
  • 即使添加“unsafe-eval”后,对 function() 的调用也会被 CSP 阻止

    我正在开发一个 NodeJS 项目并且正在使用CSP 内容安全政策 http www w3 org TR CSP 我正在使用外部插件FullCalendar它被 csp 阻止 出现以下错误 Error call to Function bl
  • Sequelize:批量插入

    我正在使用 Node js MySQL 和 Sequelize 我想一次向表中插入一些 10k 行 桌子有定制的primaryKey字段 正在手动设置 数据是从网上下载的并且是重叠的 我想要一个版本bulkCreate如果数据中的任何行具有
  • 如何在 MPAndroidChart 中向 x 轴和 y 轴添加字符串标签

    I am trying to add a String Label in order to label both the domain x axis and the range y axis of my LineChart as shown
  • Django:GenericForeignKey 中的 content_type_id

    我根据文档编写了这个类 以便能够对应用程序中具有 id 的任何内容进行投票 class Vote models Model class Meta unique together voted id voter id content type
  • take 2 $ [1..] 在 haskell 中如何工作?

    我们知道 运算符绑定的是最松散的 并且也关联到右侧 这意味着 1 应该首先被评估 因此 它不应该陷入无限循环吗 为什么它甚至完全停止了 Haskell is lazy and doesn t change that The operator
  • 适用于 C++ 的最佳开放式 XML 解析器是什么? [复制]

    这个问题在这里已经有答案了 我正在寻找一个简单 干净 正确的 XML 解析器来在我的 C 项目中使用 我应该自己写吗 怎么样RapidXML http rapidxml sourceforge net RapidXML 是一个用 C 编写的
  • C++:全局变量作为指针

    我是 C 新手 对全局变量有一个问题 我在许多示例中看 到全局变量是带有堆地址的指针 所以指针位于全局 静态变量的内存中 地址后面的数据位于堆上 对吗 相反 您可以声明存储数据的全局 无指针 变量 因此 数据存储在全局 静态变量的内存中 而