1

重複の可能性:
char a [] =“ string”;の違いは何ですか。およびchar*p =“ string”;

配列バージョンは配列メモリを割り当てるので、100バイトの文字列は定数セクションで100バイトを使用し、静的配列で100バイトを使用しますか、それとも合計100バイトのみを使用しますか?そして、ポインタバージョンでは、文字列の100バイト以外にポインタにワードサイズを割り当てますか、それともポインタを定数セクションアドレスに完全に最適化しますか?

4

1 に答える 1

1

一般的なコンピューターを使用している場合は、次の.rodataセクションがあります。

#include <stdio.h>

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

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

100 + sizeof(char *)セクションにバイトを割り当てます.rodata

#include <stdio.h>

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

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

100セクションにバイトを割り当てます.rodata

于 2013-01-12T14:14:45.683 に答える