【发布时间】:2021-11-14 06:24:54
【问题描述】:
我有一个分配,我必须在其中创建一个函数来分配一个块,该块的起始索引是 int 的倍数,称为“对齐”和给定大小。
函数原型是
int block_alloc(void ** ptr_addr, size_t alignment, size_t size)
假设我以这种方式调用块分配:
int a=0;
ptr = &a;
void* ptr_2 = ptr;
ret = block_alloc ( &ptr_2 ,2* sizeof ( void*) , 2* sizeof ( int ) ) ;
我正在做块分配
ptr_addr = malloc ( sizeof (int) );
但是在打印指针时它会返回 &a 位置
我需要在给定的偏移量中进行 malloc 并完成所有工作,任何提示我做错了什么?
【问题讨论】:
-
更改为
*ptr_addr = malloc ( sizeof (int) ); -
malloc 中的地址偏移怎么办,这让我很困惑,因为我只能使用 c99 和 stdlib 函数
-
"一个名为 "alignment" 的 int 与
size_t alignment冲突。是int还是size_t。请详细说明alignment的用途。 -
" 任何提示我做错了什么?" @John Bode 发现了其中一个问题(一个关键问题)。
-
是的,约翰的回答很完整,解决了我所有的疑问。