【问题标题】:What is the difference between static const char * const and static const char []? [duplicate]static const char * const 和 static const char [] 有什么区别? [复制]
【发布时间】:2012-12-26 23:22:19
【问题描述】:

可能重复:
What is the difference between char a[] = “string”; and char *p = “string”;

数组版本会分配数组内存,所以一个 100 字节的字符串将在常量部分使用 100 个字节,在静态数组上使用 100 个字节,还是总共只使用 100 个字节?而指针版本,除了字符串的100字节外,还会为指针分配字长,还是将指针完全优化为常量段地址?

【问题讨论】:

  • static 控制链接和存储除了上面标记的副本所说的内容。
  • 这不是同一个问题,因为静态修饰符可以优化内存分配。

标签: c++ c memory memory-management static


【解决方案1】:

如果您使用普通计算机,带有.rodata 部分:

#include <stdio.h>

static const char *s = /* string of 100 characters */;

int main(void)
{
  puts(s);
  return 0;
}

它在.rodata 部分分配100 + sizeof(char *) 字节。

#include <stdio.h>

static const char s[100] = /* string of 100 characters */;

int main(void)
{
  puts(s);
  return 0;
}

它在.rodata 部分分配100 字节。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 2010-10-27
    • 2011-04-09
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多