最近我收到了一些有一些问题的遗留代码.在一些代码中,我注意到许多状态报告存储为3d char数组.踢球者是很多这个空间实际上是未使用过的.例如:
const char txt[<60>][6][150] = { {"This is a very very long string of text","The others are empty","",""},{"The text is different,but similarly a lot of unused space",etc...} };
(60不存在,但有60个条目).
然后使用以上声明通过QSPI将此代码放入闪存中
__attribute__((section(".ExtQSPIFlashSection")))
此部分在链接器中定义如下:
QSPI (rx) : ORIGIN = 0x90000000,LENGTH = 64M .ExtQSPIFlashSection : { *(.ExtQSPIFlashSection) } >QSPI
作为一种更有效的内存方法,我想重写它:
const char **txt[] = { (const char*[]) {"This is a very very long string of text",(const char*[]){"The text is different,etc...} };
但是,现在将数组(或任何正确的术语)写入RAM,这会导致它溢出.
'._user_heap_stack' will not fit in region RAM region 'RAM' overflowed by 6888 bytes
这个6888字节比删除部分部分的原始方法更少,但不是所需的结果.
我如何告诉(我认为)链接器还将字符串写入闪存?
一切都是永恒不变的,不会做任何改变,让它成为指针或指向的值.
解决方法
你需要const char * const * const …
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。