2011-08-10 12 views
3

のメモリ領域は、私はGCCを使用して、私は、メモリ内のsomewere "red\0blue\0green\0..."のようなテキストのポインタの配列と大きなヒープを持ってのgcc:匿名の文字列

const char* myArray[1000] = {"red", "blue", "green", "yellow", ...}; 

のように、テキストの大きさの配列を定義する必要があります。私はそのテキストのメモリ領域を変更したい。私は__attribute__((section(...))) GCCディレクティブを使用しましたが、ポインタの割り当てだけを変更します。ビッグテキストチャンクの割り当てを変更するにはどうすればよいですか?答えをありがとう。

P.S.悪い英語で申し訳ありません。

+0

**あなたがこれをしたい理由をいくつか考えてもらえますか?それはあなたが必要とするものを達成する方法を理解するのに役立つかもしれませんが、これは良い考えではないと思われます... –

答えて

2

gccで-fdata-sectionsを使用できます。これにより、object-fileのグローバル変数ごとに固有のセクションが作成されます。

次に、セクションを目的のメモリ領域に配置するようにリンカー(ld)に指示するLdScriptファイルを作成できます。

匿名の文字列は、オブジェクトファイルの.rodataセクションにあります。 LdScriptの例のスニペット:

.memregion1.rodata : 
{ 
    Startup.c.obj(.rodata.str1.8) 
} 

は、Startup.cからstr1.8をmemregion1に配置します。

+0

'const char red [] __attribute __((section( "mytext")))= "red"; const char blue [] __attribute __((section( "mytext")))= "blue"; const char * myArray [] = {赤、青、...}; ' – user786653

関連する問題