簡體   English   中英

有限內存平台上的數組指針的C ++數組(arduino)

[英]C++ array of pointers to array on limited memory platform (arduino)

對於字母表中的每個字母,我有一個如下所示的int數組:

int const  A[64] ={ 
    0,0,0,0,0,0,0,0,
    0,0,0,0,0,0,0,0,
    0,1,1,1,0,0,0,0,
    0,1,0,1,0,0,0,0,
    0,1,1,1,0,0,0,0,
    0,1,0,1,0,0,0,0,
    0,1,0,1,0,0,0,0,
    0,0,0,0,0,0,0,0
};

然后我創建另一個數組,指向這些。

int const * text[] = { A, B, C };

這工作正常,直到該文本數組達到一定數量的不同條目。

例如,這工作:

int const * text[] = { A, A, A, A, A, A, A, A }; // could even go on much longer

但這崩潰了:

int const * text[] = { A, B, C, D }; // it seems the number of different entries matters

這是為什么? 我認為,如果它是指針,那么它指向什么並不重要它總是具有恆定的大小?

請注意,這是在arduino平台上運行的,它的內存非常有限。

我懷疑正在優化查找具有相同元素的數組; 如果是int const *text[]; 如果在頭文件中聲明並在單獨的目標文件中編譯(定義),您可能會看到相同的問題。 鏈接器正在盡力而為,但所有數據都可能與堆/堆棧空間重疊。

至少使用avr-libc(使用avr-gcc,avr-binutils),有宏或變量屬性可以將這種常量數據放在更大的只讀程序空間(閃存ROM)中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM