C 类型转换在动态内存分配中扮演什么角色?

C 类型转换在动态内存分配中扮演什么角色?,c,memory,dynamic,malloc,allocation,C,Memory,Dynamic,Malloc,Allocation,据我所知,动态内存分配可以通过使用malloc函数在C中完成: int *p = (int *)malloc(sizeof(int)) 我的问题是: 动态内存分配是如何工作的,它与常规方法(即静态分配)在工作方面有何不同 在malloc()函数之前,语句(int*)的作用是什么 类型转换在这里扮演什么角色?(如果是这样的话) 动态内存分配是如何工作的,它在工作方面与常规方法有什么不同 您有一个在运行时管理从操作系统分配的内存页的库。该库管理这些页面并对其进行细分,以处理malloc(

据我所知,动态内存分配可以通过使用
malloc
函数在C中完成:

     int *p = (int *)malloc(sizeof(int))
我的问题是:

  • 动态内存分配是如何工作的,它与常规方法(即静态分配)在工作方面有何不同

  • malloc()
    函数之前,语句
    (int*)
    的作用是什么

  • 类型转换在这里扮演什么角色?(如果是这样的话)

  • 动态内存分配是如何工作的,它在工作方面与常规方法有什么不同

    您有一个在运行时管理从操作系统分配的内存页的库。该库管理这些页面并对其进行细分,以处理malloc()调用发出的通常较小的请求

    相反,静态变量由链接器和加载程序分配。链接器定义程序在内存中的布局,并创建一个可执行文件,其中包含加载程序设置程序初始状态的指令

    malloc()函数前面的语句(int*)的作用是什么

    消除隐式(void*)到(int*)转换时可能收到的警告消息

    类型转换在这里扮演什么角色?(如果是这样的话)


    请参见上文。

    默认情况下
    malloc()
    返回一个空指针。

    按照常规方法,我指的是静态内存分配。静态和动态内存分配的工作方式有什么不同?C编译器不会生成这样的警告。在C++中,你应该使用<代码>新< /C> >而不是<代码> MalOC ,它也不需要显式强制转换。不应该有警告消息;如果真的有这样一个问题,那么这是一个不应该被删除的重要内容(例如,你没有包括stdlib.h),我不知道这如何回答这个问题,或者如何改进/扩展上面已经发布的问题。