Malloc 和对齐

问题描述 投票:0回答:1

据我所知,每种类型(例如 int)只能存储在以 2 的幂开始的内存地址。现在我的问题是,malloc 如何应对这一要求?例如,如果我打电话

void * ptr;
ptr = malloc(8);

那么我想在给定的八个字节的内存块中存储什么并不明显。因此,malloc 是否总是返回位于 2 的最大幂的块的起始地址,以便可以存储每个标准类型?如果我理解有误,请随时纠正我。

c malloc memory-alignment
1个回答
0
投票

C 2018 7.22.3 指定了内存分配例程的行为,其第 1 段表示“……分配成功时返回的指针经过适当对齐,以便可以将其分配给指向具有基本对齐要求的任何类型对象的指针……”

© www.soinside.com 2019 - 2024. All rights reserved.