C内存分配初始化和处理

标签 c memory-management pointer-arithmetic

我在这里的任务有问题。我需要创建一个全局空闲内存块并将其 malloc。由于类型转换和处理错误,在初始化它时遇到一些麻烦。

就像 C 中的数组,其中第一个数组实际上是指向第一个元素的指针,我的内存块需要类似,我可以使用指针算法来定位内存块。

//global variable
static byte *memory = NULL;

void allocator_init(u_int32_t size){

     *memory = (byte*) malloc(size);
}

指向这些内存地址的地址/指针将​​通过结构/链接存储为内存块的 header 。

typedef struct _header {
    int signiture;
    int size;
    header* next;
    header* prev;
} header;

最佳答案

删除*:

*memory = (byte*) malloc(size);
^

您可能还想放弃类型转换,但那是您的决定。

关于C内存分配初始化和处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12006802/

相关文章:

c - 关于 printf 语句输出的问题

c - 指针运算

检查 LAN 是否已插入

c - 在 C 中使用 strstr 在主字符串中搜索多个字符串

c# - 如何使用 C# 处理超大的 .xlsx 文件

pointers - 我可以返回一个结构,该结构使用特征实现中的 PhantomData 来为原始指针添加生命周期而不污染接口(interface)吗?

python - 无法正确安装rpy2 : undefined symbol omp_get_num_procs

c - 如何使用十六进制表示法为 char* 赋值?

c - 缓冲区分配不是字大小的倍数

c++ - 是否对未指向序列未定义行为中的元素的指针递增/递减或添加整数值?