MacOSのソースコードで@""NSStringオブジェクトの束を定義する場合は知っています。これらのNSStringは、Mach-Oライブラリのセグメントに格納されます。
Section
sectname __ustring
segname __TEXT
addr 0x000b3b54
size 0x000001b7
offset 731988
align 2^1 (2)
reloff 0
nreloc 0
flags 0x00000000
reserved1 0
reserved2 0
0x0000
バイナリを16進ダンプすると、セパレータとして1つずつ密接に配置されます。私が知りたいのは、プログラムの実行時にMac OSXのローダーがこれらのNSStringをどのようにロードするかです。それらはセパレーターを認識することによって単純にロードされ0x0000
ますか、それともこれらは別々のNSStringオブジェクトを指すバイナリの他の場所にある文字列オフセットテーブルですか?ありがとう。
(私が本当にやりたいのは、NSStringの1つの長さを増やすことです。したがって、ローダーがこれらの個別のオブジェクトをどのように認識するかを知る必要があります)
追加:コードで@ "abc"のようなCStringを定義すると、cstringセグメントに移動します。@ "" ""のようにASCII文字が含まれていない文字列の場合、私の掘り下げに従ってustringセクションに移動します。