硬件在2D数组中赋值时出错,C

时间:2014-10-23 15:37:04

标签: c arrays 2d fault

在ARM微控制器中编写C程序,当我尝试在2D数组中分配值时出现硬故障,我完全不知道为什么会发生这种情况

#include "GLCD.h"   
#include <LPC17xx.H> 

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>


const size_t w = 319;
const size_t h = 239;


int main (void) {

    bool  univ[h][w];
    int x,y;

    for (x = 0; x < w; x++) for (y = 0; y < h; y++) {
        univ[y][x] = 1;

    }
    while (1);
}   

感谢

1 个答案:

答案 0 :(得分:1)

您可能导致堆栈溢出。你要求至少76K的堆栈;嵌入式系统可能有更像3K的可用堆栈。

查阅正在使用的操作系统的文档(或者编写一些探测代码并将其与链接器映射中的内容进行比较等),以确定实际可用的堆栈数。

与此同时,如果您创建此数组static,那么如果它对于静态数据区域来说太大,则会出现链接错误。你可以使用比特而不是bool来节省至少7/8的空间。