7

たとえば、プログラムがある場合

int main()
{
    const char* str = "1111111111111111111111111111111111111111111";
    printf("%s", str);

    return 0;
}

そしてそれをコンパイルし、生成されたバイナリを「11111111111111111111111111111111111111111」で検索すると (エンコーディングなどの問題を無視して)、それを見つけることが保証されていますか、それとも、たとえばヒープメモリを割り当てるコードをコンパイラが生成することは許容されますか?ループを使用して「1」で埋めてから、その文字列リテラルへのすべての参照をヒープメモリを指すように修正しますか? (そして、適切なタイミングで割り当てが解除されるようにします、何とか何とか)

実際にこれを行う実装があるとは思えません...しかし、もしそうなら、それは標準に準拠していますか?

4

5 に答える 5

3

バイナリ ストレージは C++ 標準の影響を受けません

于 2013-10-10T18:48:48.623 に答える
1

いいえ、標準では、文字列リテラルがどこにどのように格納されるかはわかりません。それは実装の詳細です。

于 2013-10-10T18:47:21.327 に答える
1

それは、コードがコンパイルされているコンピューターのコンパイラーとアーキテクチャー次第です。C++ 標準は、バイナリ形式でのコードの格納方法には影響しません。

于 2013-10-10T18:47:55.283 に答える
0

コンパイルされたプログラム内でエンコードする代わりに、コンパイラがそれを行う正当な理由はないと思います。

于 2013-10-10T18:47:20.943 に答える