【问题标题】:How much Memory allocation there will be in the pointer array [closed]指针数组中将分配多少内存[关闭]
【发布时间】:2019-01-01 07:29:37
【问题描述】:

在下面的语句中:

char *myarray[] = {"Amir"};

对于指针myarray[],分配了多少字节的内存?

【问题讨论】:

  • myarray[] 不是指针。它实际上什么都不是,因为myarray[] 不是左值,它只是一个声明符语法。 myarray 是一个数组,myarray[0] 是一个指针。 myarray[0] 指向字符串文字的第一个元素。您使用sizeof thing您的 目标系统上获得thing 的大小 - 它说明了什么?
  • 请记住,在现代 C++ 中将字符串文字 (const char []) 分配给非const 指针是非法的,编译器错误。
  • 它是有效的 C,因此我相信 c++ 标签是错误的......但谁知道呢。另外,Char 是什么?
  • @AnttiHaapala 我认为 OP 的意思是说char,而不是 Char
  • 那么我想这是 OP 想要澄清的另一件事。

标签: c++ c memory


【解决方案1】:

这取决于操作系统架构。因为它是一个char * 的数组,在这种情况下它的大小相当于一个指针。

对于 32 位寻址,它将占用 4 个字节。

对于 64 位寻址,它将占用 8 个字节。

【讨论】:

  • C 和 C++ 都放置空终止符。
  • @user4581301 发布答案后,我发现它是char * 的数组,而不是字符数组。很抱歉。
  • char 的@KunalPuri 大小始终为 1 = 1 字节。
  • @KunalPuri 现在你会进一步了解:“C++ 内存模型中的基本存储单元是字节。一个字节至少大到足以包含基本的任何成员执行字符集 (5.3) 和 Unicode UTF-8 编码形式的八位代码单元,由连续的位序列组成,位的数量由实现定义。"我>
  • C 或 C++ 实现可以选择字节中的位数,但不能更改标识字节 === 字符类型。
猜你喜欢
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 2020-12-16
  • 2015-12-10
  • 2014-06-19
  • 1970-01-01
相关资源
最近更新 更多