热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我定义了一个结构体数组全局变量,下标较多时,程序就死

我定义了一个对象字典,是一个结构体数组全局变量,并初始化,不是const的。当下标比较多时,程序就死掉,我减少一点程序就能运行。其中.data段,.bss段,.text段全都放在外部SRAM中,其中
我定义了一个对象字典,是一个结构体 数组全局变量,并初始化,不是const的。当下标比较多时,程序就死掉,我减少一点程序就能运行。其中.data段,.bss段,.text段全都放在外部SRAM中,其中.test段大小是52720字节。.data段大小是8412字节。SRAM是512k字节,足够大。

上图是我定义的全局变量,目前加一行程序就跑死了。请问这是啥原因啊。

7 个解决方案

#1


#2


你的stack定义在哪儿,有一种可能是stack空间太小,结果导致要么是stack被毁,要么是你的bss段或者data段被毁。

#3


引用 2 楼 xinzha 的回复:
你的stack定义在哪儿,有一种可能是stack空间太小,结果导致要么是stack被毁,要么是你的bss段或者data段被毁。
我堆栈都定义在外部SRAM中的,足够大的,还剩几百K。目前最新情况是我把code部分放在了内部RAM中,竟然OK,非常想不明白
Info: (coe_test.elf) 64 KBytes program size (code + initialized data).
Info:  447 KBytes free for stack + heap.

#4


引用 2 楼 xinzha 的回复:
你的stack定义在哪儿,有一种可能是stack空间太小,结果导致要么是stack被毁,要么是你的bss段或者data段被毁。

还有这种情况会不会代码哪个地方有问题引起?但是代码既然编译通过了,执行过程就不会有问题啊

#5


我个人感觉还是越界,野指针或者堆栈被覆盖造成的,地方够不见得就没问题,要看你的堆栈指定在哪里。
你尝试下堆栈跟踪,如果有硬件debugger就更好办了。

#6


请问下,OBJMEM 把数组 ObjDictList 放到哪里去了?

#7


引用 4 楼 zjwyczj 的回复:
Quote: 引用 2 楼 xinzha 的回复:

你的stack定义在哪儿,有一种可能是stack空间太小,结果导致要么是stack被毁,要么是你的bss段或者data段被毁。

还有这种情况会不会代码哪个地方有问题引起?但是代码既然编译通过了,执行过程就不会有问题啊
恩,应该是这个问题了,SRAM地址线可能连的有问题。堆栈指针指到不是实际的SRAM地址了。我现在编译优化后,代码减小了就ok了。

推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 标题: ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
author-avatar
手机用户2602920567
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有