gpt4 book ai didi

c - 使用 Malloc 更改指针地址

转载 作者:行者123 更新时间:2023-11-30 18:18:09 25 4
gpt4 key购买 nike

这是代码片段:

void main() {
int i,*s;
for(i=1;i<=4;i++) {
s=malloc(sizeof(int));
printf("%lu \n",(unsigned long)s);
}
}

我的 comp 上 int 的大小是 2 个字节,因此 printf 命令不应该打印地址递增 16 位,而是将地址打印为:

2215224120
2215224128
2215224136...

为什么会这样?

最佳答案

如何管理内存完全取决于您的操作系统。它可以从任何地方分配内存,你绝对不能假设内存将在哪里。

大多数内存分配器也有一些开销,因此即使是简单的 2 字节分配也可能占用 8 字节或更多。此外,由于多种原因(例如性能,以及因为某些 CPU 在从未对齐的地址读取时甚至会崩溃),地址可能需要对齐。

底线 - 按原样获取 malloc 的返回值,不要做出任何猜测或假设。

关于c - 使用 Malloc 更改指针地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8800591/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com