This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1231H6PZ:局部变量会覆盖全局变量的存储器地址

Guru**** 2386600 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1409366/tm4c1231h6pz-local-variable-is-overlaping-memory-address-of-a-global-variable

器件型号:TM4C1231H6PZ

工具与软件:

大家好、

请帮助我了解为什么以及如何防止以下情况:


结构 Dispositivo_BVRC BillAcceptor_SCL_Create (unsigned char UPort、unsigned char index)

结构 Dispositivo_BVRC ans;
ANS.ID=25;//Device_CFG_BV_SCL.ID;
答案 端口= UPort;
答案 类型=发单接收器;
答案 Estado=AccInstalado;
返回(应答);
}

当程序进入该函数时、具有从头文件调用的已定义结构的变量"ans"。 与另一个.c 文件中声明的全局变量的存储器重叠...

希望这是足够你的家伙,我不想让你迷路与所有其他代码...

编译器版本为:TI 20.2.7 LTS

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、大家好!

    我发现移动堆栈器尺寸的参数可以解决问题。 基本上,我的结构太大了,在堆栈器中生活,我把参数从256更改为512 ,它似乎解决了问题... 但堆栈器的适当值是什么???? 我可以写入1,024,2048???  

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    256到512似乎解决了问题... 但堆栈器的适当值是什么???? 我可以写入1,024,2048???  [报价]

    欢迎您的问题得到解决。 您可以更改为更高的值(如1024)、但如果只需要512、则无需分配过多的堆栈大小、因为它会浪费未使用的内存。