为什么没有为原始数据类型分配内存? [复制]

2024-04-10

char、bool 和 int 等原始数据类型有一定的内存。假设char,它有1个字节的内存。当我们在代码中使用 char 变量时,该变量必须需要 1 个字节的内存。在这种情况下我们为什么不分配内存呢?由于我们从未为其分配内存,因此它如何使用内存,即在这种情况下,CPU 是否为其分配内存?我还在某处读到,原始数据类型被放入堆栈中,并在工作完成后被删除。什么样的堆栈?在这种情况下,堆栈是如何出现的?


当我们创建一个NSString *变量,我们也不为此分配内存。

我们只在以下情况下分配内存alloc被我们直接调用或者在我们调用的方法中调用。

An NSString对象存在于我们分配的内存堆中,但是NSString *变量(即指向NSStringobject)存在于我们未分配的堆栈内存中。

例如,给定这两个变量:

NSString *stringOne;
NSString *stringTwo;

到目前为止,两者都没有在堆上分配任何内存,尽管它们确实以与char, BOOL, or int存在于记忆中。

NSString *stringOne = [[NSString alloc] initWithString:@"Hello world"];
NSString *stringTwo = stringOne;

现在发生了什么?我们在堆上分配了一些内存NSString目的。然后我们初始化这个内存来表示字符串“Hello world”,然后返回一个指向这个对象的指针并将其分配给stringOne.

接下来,我们只需将该指针复制到我们正在使用的堆栈内存中stringTwo。我们没有在堆上分配任何额外的内存。我们只是让两个字符串变量指向堆上相同的分配内存。

The 评论中链接的问答 jsd https://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap?lq=1有关堆栈和堆内存的更多解释将回答您的一些问题。

还值得注意的是,许多其他编程语言(例如 C++)允许在堆栈上创建对象,在这种情况下,我们不会像处理堆对象那样分配它们。它们确实存在于内存中,只是更类似于原始数据类型。

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

为什么没有为原始数据类型分配内存? [复制] 的相关文章

随机推荐

  • Kotlin when() 局部变量介绍

    假设我有一个昂贵的函数 名为doHardThings 它可能返回各种不同的类型 我想根据返回的类型采取行动 在 Scala 中 这是一个常见的用法match构造 def hardThings doHardThings match case
  • 使用 Vue.js 确定放置坐标是否位于另一个元素上方?

    我正在使用vue 可拖动 可调整大小 https github com mauricius vue draggable resizable组件将给出 x y 偏移坐标 说明我的元素在页面上的放置位置 一切都很好 但是 我想知道是否有办法确定
  • 如果我在函数中导入模块,变量是局部变量吗?

    如果我在函数 本地范围 内导入 python 3 中的模块 导入的内容是否是该函数的本地内容 Like def test import math s math cos 1 s math cos 1 是的 该模块将是该函数的本地模块 至少在上
  • 哪个元素导致水平滚动条?自动检测[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 隐藏或删除导航栏按钮项目中的特定项目,Swift 4

    从导航栏中隐藏或删除特定按钮项目UIBarButtonItem这是从故事板给出的 例如右侧导航栏项目我添加了 3UIBarButtonItem就像情节提要中的 完成 取消 下一步 现在我想根据用户登录以编程方式从导航栏中删除或隐藏 取消 按
  • ADT插件会自动创建ant构建文件吗?

    几个月前我创建了一个 Android 项目 现在必须使用 Hudson 自动化构建过程 Android 开发指南提到了一个 build xml 文件 该文件在生成项目时创建 http developer android com guide
  • 多语言 PHP 应用程序:最佳实践?

    我想获得您对我在 PHP MVC Web 应用程序上实现多语言支持的方式的反馈 我就是这样做的 在 app 文件夹中 我创建了一个 linguals 文件夹 其中包含每种语言一个文件 english php spanish php 等 每个
  • .htaccess 将子域重写到目录

    是否可以使用 htaccess将子域重写为目录 Example http sub domain example 显示内容 http domain example subdomains sub 尝试将其放入您的 htaccess file R
  • 服务和活动之间沟通的最佳方式是什么?

    现在 Activity 可以使用以下三种方式之一连接到服务 广播接收器 http developer android com reference android content BroadcastReceiver html 信使 http
  • FAILED 错误:java.io.IOException:所有收集器的初始化失败

    我在运行 MapReduce WordCount 作业时遇到一些错误 错误 java io IOException 所有收集器的初始化 失败的 最后一个收集器中的错误是 class wordcount wordmapper at org a
  • Webpack - extract-text-webpack-plugin 找不到模块

    webpack config js var ExtractTextPlugin require extract text webpack plugin 如果我刚刚实现该插件 我会立即收到此错误 module js 339 throw err
  • URLLoader 数据到 BitmapData

    我正在尝试加载 SWF 文件旁边的图像文件 像这样的东西 var loader URLLoader new URLLoader loader dataFormat URLLoaderDataFormat BINARY loader addE
  • MVC 与前端控制器混淆

    简化问题 我正在学习 oop 模式 并且希望构建自己的简单 mvc 框架 我希望它有一个前端控制器 但我发现很难找到任何可靠的信息来使用 MVC 实现前端控制器 特别是我很困惑前端控制器是否应该启动整个三元组 或者前端控制器是否只是简单地调
  • SKScene 中的 Segue 到 UIViewController

    在我的 GameScene swift 文件中 我尝试执行返回到我的菜单视图控制器的操作 如下所示 func returnToMainMenu var vc UIViewController UIViewController vc self
  • MySQL CASE 是如何工作的?

    我知道 SQL 的CASE语法如下 CASE WHEN search condition THEN statement list WHEN search condition THEN statement list ELSE statemen
  • javascript 函数绑定到什么对象(它的“this”是什么)?

    我知道它在函数内部this var func function return this f arguments callee gt true if bound to some object gt false if is bound to n
  • 如何找到csv文件列的平均值

    import csv with open Met csv r as f reader csv reader f delimiter quoting csv QUOTE NONE for row in reader print row 我无法
  • 显示包含扩展信息的页面

    I have the following functionality given below 单击详细信息时 我希望内容视图上显示的文本应显示在由推送异步创建的新详细信息页面上 如何发送包含内容中给出的信息的参数 例如标题 类别和描述 我有
  • 来自 keras 模型中图像列表的 TensorFlow 数据集

    我试图了解如何读取本地图像 将它们用作 TensorFlowDataset https www tensorflow org api docs python tf data Dataset并使用 TF 数据集训练 Keras 模型 我正在关
  • 为什么没有为原始数据类型分配内存? [复制]

    这个问题在这里已经有答案了 char bool 和 int 等原始数据类型有一定的内存 假设char 它有1个字节的内存 当我们在代码中使用 char 变量时 该变量必须需要 1 个字节的内存 在这种情况下我们为什么不分配内存呢 由于我们从