繁体   English   中英

c内存分配和数组数组

[英]c memory allocation and arrays of arrays

我目前正在编写基于终端的十六进制编辑器。 我对内存分配有一些疑问。

为了跟踪用户所做的更改,我将它们写入数组数组,如下所示: [i][0]是更改从文件开头的绝对偏移量, [i][1]是更改本身:

unsigned long long writebuffer[10000][2];

但是我有两个问题。 第一个数组( writebuffer[i][0] )需要为sizeof unsigned long long但是第二个数组( [i][1] )可以和sizeof unsigned char一样小。 有可能做这样的事情吗?

我还可以动态分配writebuffer的第一个索引,这样我就不会像上面那样初始化它,而更像是:

unsigned long long **writebuffer;

然后使用malloc()realloc()更改第一个索引; 而第二个索引将是2,但具有unsigned char的大小。

为什么不使用结构?

typedef struct {
    long long offset;
    int change; /* or unsigned short, or whatever you feel is right */
} t_change;

请注意,如果您选择将unsigned char用于change元素,则编译器可能会将结构填充为不同的大小。 它要填充的内容取决于您的编译器,编译器设置和目标体系结构。

您可以定义一个类型为void的数组:

void **writebuffer;

然后根据需要分配和使用每个元素,例如:

*writebuffer[0] = (char*)malloc(sizeof(char));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM