在C99中的连续内存中分配两个全局数组

亚历山大·斯蒂普勒

我想为闪存访问模块编写一些单元测试。我有

extern char_t _internal_flash_start[]; /**< Exported from ICF file. */
extern char_t _internal_flash_end[]; /**< Exported from ICF file. */

我认为将自己的数组作为Flash内容注入是完美的,因为在应用程序中这些符号是通过链接器文件提供的。在我的测试中,我想要以下内容:

char_t _internal_flash_start[2048]; /**< Exported from ICF file. */
char_t _internal_flash_end[1];

但是我需要第二个数组才能在第一个数组之后开始。我做了很多尝试,但无法为我工作。有没有办法满足给定的声明并在内存中有连续的数组?

chux-恢复莫妮卡

我需要第二个数组才能在第一个数组之后开始。

形成一个 struct

struct my_data {
  char_t _internal_flash_start[2048]; /**< Exported from ICF file. */
  char_t _internal_flash_end[1];
} x;

成员之间仍然可能存在填充:肯定不太可能char_t [2048]

特定于实现的方法packed将确保没有填充。


一个学究的解决方案将创建一个数组,并使用指向其各个部分的指针。但是现在我们有2个指针,而不是两个数组。他们的sizeof意志与上面有所不同。

char_t _internal_flash[2048+1];
char_t *_internal_flash_start = &_internal_flash[0];
char_t *_internal_flash_end   = &_internal_flash[2048];

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在访谈中编写两个函数来在C ++中分配和取消分配int数组

来自分类Dev

在访谈中编写两个函数来在C ++中分配和取消分配int数组

来自分类Dev

如何在Swift中创建全局数组并在两个TableView中保存值

来自分类Dev

指向结构内存分配的C(std = c99)指针

来自分类Dev

在VHDL中的两个过程中分配信号

来自分类Dev

是否可以在单个线程进程中的两个连续的C语句之间修改堆上的内存

来自分类Dev

在scala中分配两个值

来自分类Dev

C99中的可变函数要重新分配几个数组?

来自分类Dev

C语言:两个char*指针结构的内存分配

来自分类Dev

对数组中的两个连续元素求和

来自分类Dev

在C中传递非全局数组变量

来自分类Dev

C99 GDB中的可变长度数组

来自分类Dev

如何从C中的文件读取两个连续的字符?

来自分类Dev

在C#中连续执行两个事件

来自分类Dev

如何从C中的文件读取两个连续的字符?

来自分类Dev

在同一命令中分配两个C预处理程序宏

来自分类Dev

为什么Node.js中的全局数组会导致内存泄漏?

来自分类Dev

我如何先在C中声明一个全局数组,然后再初始化它的大小?

来自分类Dev

在Perl foreach循环中分配两个变量

来自分类Dev

在输入中分配两个名称/值

来自分类Dev

Python在一行中分配两个列表

来自分类Dev

在函数C ++中分配内存2D数组

来自分类Dev

如何在C中分配多维数组所需的内存?

来自分类Dev

在递归函数中操作全局数组

来自分类Dev

python中的全局数组打印

来自分类Dev

在JavaScript中设置全局数组的值

来自分类Dev

在递归函数中操作全局数组

来自分类Dev

python中的全局数组打印

来自分类Dev

函数中的 malloc 全局数组

Related 相关文章

热门标签

归档