[英]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.