打印

DSP的可变长度数组申请

[复制链接]
2671|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
specialfrin|  楼主 | 2012-9-22 20:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有个压缩算法,在windows下运行是完全OK的,但移植到DSP下,遇到内存问题,下面我大概说下问题结构:

大概有结构如下

typedef struct _COMPRESSED_DATA_
{
  int width;


int height;

BYTE  m_Data[0];      // 压缩后数据
}COMPRESSEDDATA,PCOMPRESSEDDATA;




移植到CCS上编译,BYTE  m_Data[0]报错;

我改成BYTE  *m_Data; 编译通过,运行用监视器发现m_Data的地址显示

“cannot read memory at 0x00000001:memory is not present”

相关帖子

沙发
specialfrin|  楼主 | 2012-9-22 20:50 | 只看该作者
请问高手这个问题怎么解决啊?

DSP上怎么定义一个可变长度的数组?

使用特权

评论回复
板凳
wjzx111056| | 2012-9-22 21:11 | 只看该作者
程序在DSP下也是一样的,和普通C没有太大的区别,如果定义了指针,声明引用时必须初始化。
用固定长度的数组也有一个折中的办法,把数组长度定义一个比较大的值,然后可以用strlen()获取实际长度(不能用sizeof)。

使用特权

评论回复
地板
hawksabre| | 2012-9-23 18:19 | 只看该作者
通过指针和动态分配函数完成。
如: int  *p;
         p=(int *)malloc(sizeof(int)*10);
上述可申请大小为10的整型数组。
当然也可以用链表实现。

使用特权

评论回复
5
hawksabre| | 2012-9-23 18:19 | 只看该作者
C99标准定义了可变长数组,不过也是有限的。VC并不支持,TC远老于C99就更不可能支持了,gcc支持。
要真正的动态数组还是只能用指针,用malloc分配内存。

使用特权

评论回复
6
hawksabre| | 2012-9-23 18:20 | 只看该作者
希望能够帮到你   谢谢   呵呵

使用特权

评论回复
7
shenmu2012| | 2012-9-24 13:10 | 只看该作者
压缩算法?我学学的啊,看可用在单片机的c语言中不

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

1057

帖子

2

粉丝