字符串文字在内存中的什么位置?堆栈/堆? [复制]

2024-05-07

可能的重复:
C 字符串文字:它们去了哪里? https://stackoverflow.com/questions/2589949/c-string-literals-where-do-they-go

据我所知,

一般来说,指针必须是 由malloc()分配,并且将被分配 到堆,然后通过 free() 取消分配;

and

非指针(int、char、float 等)将是 自动分配到堆栈,并且 只要函数转到就未分配 返回

但是,从以下代码:

#include <stdio.h>

int main()
{
char *a;

a = "tesaja";

return 0;
}

哪里会a分配给 ?栈还是堆?


字符串literal http://en.wikipedia.org/wiki/Literal_(computer_science)将被分配在数据段 http://en.wikipedia.org/wiki/Data_segment。指向它的指针,a,将在堆栈上分配。

您的代码最终将被编译器转换为如下所示:

#include <stdio.h>

const static char literal_constant_34562[7] = {'t', 'e', 's', 'a', 'j', 'a', '\0'};

int main()
{
    char *a;

    a = &literal_constant_34562[0];

    return 0;
}

因此,你的问题的确切答案是:neither. Stack, data, bss and heap都是不同的内存区域。 const static 初始化变量将位于data.

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

字符串文字在内存中的什么位置?堆栈/堆? [复制] 的相关文章

随机推荐

  • Python Tkinter OOP 布局配置

    我正在尝试使用 tkinter 构建一个应用程序 该布局在没有 OO 原则的情况下工作 但我很难理解应该如何将其转移到 OO The layout is as shown in the pic below 1280x720px 我有以下内容
  • 河内塔与蟒蛇“柜台”

    我已经用 python 编写了 河内塔 的代码 我试图添加一个计数器来显示它运行了多少次 我尝试了一些东西 例如 while 循环和 for 循环等 但它不起作用 我确信答案很简单 但我的大脑现在运行在最低设置上 我的代码如下所示 def
  • Delta Lake 独立于 Apache Spark?

    我一直在探索数据湖屋概念和 Delta Lake 它的一些功能看起来真的很有趣 就在项目主页上https delta io https delta io 有一个图表显示 Delta Lake 运行在 您现有的数据湖 上 但没有提及 Spar
  • Python:如何在烧瓶中显示 matplotlib [重复]

    这个问题在这里已经有答案了 我对 Flask 和 Matplotlib 很陌生 我希望能够显示我在某些 html 中生成的简单图表 但我很难弄清楚如何实现 这是我的Python代码 from flask import Flask rende
  • 从Python中的字符串中提取日期时间的最佳方法

    我有一个脚本可以解析电子邮件标题中表示日期和时间的字段 这些字符串的一些示例如下 Fri 10 Jun 2011 11 04 17 0200 CEST Tue 1 Jun 2011 11 04 17 0200 Wed 8 Jul 1992
  • GMock 删除使用 ReturnArg 时的隐式转换警告

    给出以下模拟方法 MOCK METHOD2 send int const void pBuffer size t szBuffer 以及以下用法 EXPECT CALL socketMock send Times 1 WillOnce Re
  • ktor 客户端发布多部分/表单数据

    如何使用 ktor 客户端将文件作为多部分 表单数据发布 我想将它用于电报机器人 API 发送文档 我需要获得与curl命令相同的结果 curl F document path to some file https api telegram
  • 混合应用程序开发(PhoneGap、Cordova、Ionic)

    我试图了解一切是如何运作的 但对此主题有一些疑问 我将解释我如何理解这些东西 首先让我们从Cordova这是翻译平台JS CSS HTML文件到本机应用程序中 但这并不完全是事实 实际上 它只是将所有 html css 文件放入 asset
  • formatTime 以“h”而不是“:”作为分隔符

    葡萄牙时间使用以下 24 小时格式 18h30 我试过了 timeFormat H h mm timeFormat H h mm timeFormat H h mm 是否可以 谢谢 您需要使用单引号inside用于插入字母的 JavaScr
  • java.lang.IllegalStateException:无法为 X 创建层 - 使用硬件层时

    我在自定义视图上使用硬件层 以便在为其 Alpha 制作动画时获得更好的性能 在我的崩溃记者上看到这次崩溃 Fatal Exception java lang IllegalStateException Unable to create l
  • 在 Grails 下如何防止异常导致事务回滚?

    我的 Grails 服务遇到一个问题 即与事务无关的吞没异常会导致事务回滚 即使它与域对象的持久性无关 在我的服务中 我有一些类似的东西 updateSomething domainObj def oldFilename domainObj
  • CAS 注销和 cookie 消除

    我刚刚制作了一个 HelloWorld servlet 并在其上实现了 CAS 我能够毫无问题地登录 并且 CAS 在我的浏览器中设置 3 个 cookie CASGT 并为 cas 设置 2 个 JSESSIONID 1 另一个为 hel
  • C# 从另一个 void 返回一个字符串

    我很确定这是一件容易的事 我只是想从另一个 void 返回一个字符串 public static void LinkWorker string baseURLString do some stuff here HTMLWork baseUR
  • 正则表达式 - PHP Lookaround

    我有一个字符串 例如 foo Hello How are you I am very good thank you 我知道这是一个奇怪的字符串 但请留在我身边 P 我需要一个正则表达式来查找 在此处查找内容 之间的内容 并将其放入数组中 即
  • Bootstrap Popover 点击时关闭:在桌面浏览器中工作正常,但在移动浏览器中不行

    所以我有一个在 NodeJS 上运行并使用 bootstrap 作为前端的 Web 应用程序 我集成了一些引导程序弹出窗口 它们执行以下操作 当用户单击或点击图像时 它将弹出弹出窗口 用户可以单击任意位置 它将关闭弹出窗口 当我从台式机或笔
  • 命令行参数中的“-”(破折号)有什么魔力?

    例子 创建 ISO 映像并将其直接刻录到 CD mkisofs V Photos r home vivek photos cdrecord v dev dev dvdrw 更改到上一个目录 cd 侦听端口 12345 并解压发送到该端口的数
  • Visual Studio 2012 - “错误访问被拒绝”消息框 - 无其他信息

    当我使用 Visual Studio 2012 时 我偶尔会遇到错误 错误 如下 几乎没有给我任何有关问题所在的信息 看来该错误在某种程度上与源代码控制有关 因为我通常在更改文件 并且文件会自动检出 或添加新内容时收到错误 除了错误消息之外
  • 在 R 中使用 Stargazer 进行多个回归中的虚拟变量

    我正在尝试使用 R 中的 Stargazer 包创建一个回归表 我有几个仅在虚拟变量上有所不同的回归 我希望它报告自变量 常数等的系数 并在回归中包含某些固定效应 即虚拟变量 时说 是 或 否 这些是我的回归 iv1 lt ivreg da
  • UNIX crontab 中的日期时间格式

    我每 6 小时运行一次 cron 来备份我的数据库 我希望文件名包含按以下格式创建的日期和时间 mysqlbackup 22 5 2013 15 45 sql gz 这是我运行的命令 date date d mysqldump uusern
  • 字符串文字在内存中的什么位置?堆栈/堆? [复制]

    这个问题在这里已经有答案了 可能的重复 C 字符串文字 它们去了哪里 https stackoverflow com questions 2589949 c string literals where do they go 据我所知 一般来