gpt4 book ai didi

c - 两个内存分配示例之间的区别?

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:55 25 4
gpt4 key购买 nike

据我了解,

例子1

cPtr = (char*)malloc(100);

例子2

1 char c = 0;
2 char* cPtr = &c
3 cPtr = (char*)malloc(100);

在示例 1 中,malloc 创建一个内存空间并返回分配内存的第一个地址 block 。所以 cPtr 在堆内得到一个任意地址。

在示例 2 的第 2 行中,cPtr 指向 c。所以 cPtr 的地址是 c。

此时,当你执行例2的第3行时,cPtr 的值是多少?它是否像我在示例 1 中提到的那样获得任意内存地址?或者,它是否保留 c 的地址并创建一个空格?

最佳答案

Does it get an arbitrary memory address as I mentioned in Example1?

是的。该行只是覆盖了 cPtr 的先前值。

Or, Does it keep the address of c and creates a spaces?

不,它不“保留”任何东西。 cPtrmalloc() 调用的返回值覆盖,它指向某个内存块,与您的第一个示例相同。

第二个示例的第 1 行和第 2 行本质上是空操作。

关于c - 两个内存分配示例之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19278714/

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