首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有人能解释一下这里使用malloc作为指针发生了什么吗?

有人能解释一下这里使用malloc作为指针发生了什么吗?
EN

Stack Overflow用户
提问于 2013-02-26 15:01:27
回答 5查看 141关注 0票数 0
代码语言:javascript
复制
#include<stdio.h>
int main(){
    int * ptr=(int *)malloc(40);
    printf("%d",sizeof(ptr));
}

当我运行这个的时候,输出是因为8...what正在发生,here...why是输出8吗?

EN

Stack Overflow用户

发布于 2013-02-26 15:03:34

sizeof运算符是编译时运算符,在您的机器上,任何指针的大小都是8字节。

无法检索malloc-ed内存区的动态大小。否则你必须知道它,或者把它放在某个地方。

您可以考虑使用Boehm's conservative garbage collector,然后调用GC_malloc而不是malloc,不需要调用free (或GC_free),并且可以使用GC_size(p)p开始获取先前GC_malloc-ed内存区的大致大小(但我不建议使用GC_size)。

如果在Linux上使用malloc,请学习如何使用valgrind查找内存泄漏bug,以及如何使用gcc -Wall -g进行编译

票数 2
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15083231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档