TI中文支持网
TI专业的中文技术问题搜集分享网站

c2000处理器在执行标准c函数malloc、memcpy等函数时size问题

由于c2000系列处理器最小存储单元是16bit,所以sizeof(int)=1,sizeof(byte)=1。 那么在执行stdlib.h、string.h中的函数时,函数参数size_t 是按照byte(8 bits)长度得到的数量还是按照int(16bits)长度得到的数量?

例如:1、malloc(2) 是分配一个地址(16bits)的空间,还是分配两个地址的空间?

2、UINT16 a,b;

      memcpy(b,a,2)、memcpy(b,a,sizeof(a))、memcpy(b,a,1)哪种方法正确

Wei Li12:

回复 Hank Zhao:

那是不是可以认为c2000在使用string.h、 stdlib.h 中的函数时都是按照size个地址空间进行处理,而不是普通c语言编程中的size个字节?谢谢

由于c2000系列处理器最小存储单元是16bit,所以sizeof(int)=1,sizeof(byte)=1。 那么在执行stdlib.h、string.h中的函数时,函数参数size_t 是按照byte(8 bits)长度得到的数量还是按照int(16bits)长度得到的数量?

例如:1、malloc(2) 是分配一个地址(16bits)的空间,还是分配两个地址的空间?

2、UINT16 a,b;

      memcpy(b,a,2)、memcpy(b,a,sizeof(a))、memcpy(b,a,1)哪种方法正确

Hank Zhao:

回复 Wei Li12:

在C2000中字节就是16位的,而不是通常认为的8位。

由于c2000系列处理器最小存储单元是16bit,所以sizeof(int)=1,sizeof(byte)=1。 那么在执行stdlib.h、string.h中的函数时,函数参数size_t 是按照byte(8 bits)长度得到的数量还是按照int(16bits)长度得到的数量?

例如:1、malloc(2) 是分配一个地址(16bits)的空间,还是分配两个地址的空间?

2、UINT16 a,b;

      memcpy(b,a,2)、memcpy(b,a,sizeof(a))、memcpy(b,a,1)哪种方法正确

Wei Li12:

回复 Hank Zhao:

好的,理解了,谢谢

赞(0)
未经允许不得转载:TI中文支持网 » c2000处理器在执行标准c函数malloc、memcpy等函数时size问题
分享到: 更多 (0)