gpt4 book ai didi

c++ - malloc 的类型转换返回什么?

转载 作者:行者123 更新时间:2023-11-28 01:39:14 25 4
gpt4 key购买 nike

我想了解在命名 p 的最后一行返回的内容。

#include <stdio.h>
#include <stdlib.h>
int main(){
int a;
int* p;
p = (int*)malloc(sizeof(int));
}

第一季度
假设 malloc(sizeof(int)) 返回 &name(名称可以是 x 或 y 或 w),将该行解释为 p=(int*)(memoryAddress to beginning of block size) 是否安全?

Q2
有人可以重写它以使其更清楚吗?也许在 p=. 之前添加一行。我是 C++ 的初学者。

这是一张图片的链接,展示了我是如何尝试理解一切的…… 仅供引用
image

最佳答案

    p = (int*)malloc(sizeof(int));

这一行只是简单地分配了 4 个字节(实际大小取决于编译器)的内存并返回第一个字节的地址。第一个字节地址分配给 p。

malloc 的返回类型是通用的 (void *)。所以我们需要将它转换为 int * 以将其用作整数。说“use it as integer”,意思是将4个字节的连续内存作为一个数据使用。

因此,如果您按如下方式将数据放入该变量中:

*p=1234

它将使用从存储在 p 中的内存位置开始的所有 32 位内存。

关于安全,请阅读评论。

关于c++ - malloc 的类型转换返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48046512/

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