导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[转帖]如何重新使用XC堆栈内存?[liufengzhong]

 *第48058篇: [转帖]如何重新使用XC堆栈内存?

  
楼 主:liufengzhong 2014年8月31日14:47
 [转帖]如何重新使用XC堆栈内存?
Hello,

我有一个情况我想在线程重新使用被一个线程使用的一大块内存,后来在线程。我当时的感觉是正常的内存添加到堆栈中,当它超出范围应可下,是这样的情况? 在我的makefile中使用-report看似乎内存是不是以后就可以堆叠使用已经超出了范围,让更多的堆栈空间的使用比我想的, 举个例子:

void function1() {     int array1[5000];     int array2[5000];     // populate memory and do stuff     return; } void function2() {     int array1[5000];     int array2[5000];     // do stuff     return; } int main() {     function1();     function2(); }

如果这个程序需要40K(4 * 5000 * 2)或80K?我希望拨出温控功能内将再次可用内存之外,但这似乎没有发生在我的情况。在现实中,内存将不同类型(无符号的char []和int []),所以事先defininig,并通过可能是一个问题吗?理想我想有一个新的定义/分配为第二功能,但又不希望它不需要任何更多的内存,因为从功能1内存不再需要。希望有一些简单的,我看看。 

谢谢, 

格雷格


回答:


嗨,

在进入功能会出现堆栈分配在函数声明的变量,这个堆栈空间将被释放

从函数返回时。

如果我们看一下函数2的拆解,我们看到以下内容:


function2:
        entsp 10001
        retsp 10001

有分配(40004字节)和发行10001堆栈的话。


如果我们看一下,我们看到以下这些工具的报表功能:

Constraint check for "tile[0]" (node "0", tile 0):
  Cores available:            8,   used:          1 .  OKAY
  Timers available:          10,   used:          1 .  OKAY
  Chanends available:        32,   used:          0 .  OKAY
  Memory available:       65536,   used:      40828 .  OKAY
    (Stack: 40144, Code: 588, Data: 96)
Constraints checks PASSED.

这符合我们寄予的厚望,大约40KB堆栈空间所使用的程序。



>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[转帖]XMOS能转换BT.656 为RGB (24 bit)

[下一篇主题]:[转帖] 关于视觉传感器xSOFTip细节?