CUDA编程基础:了解malloc以及堆、栈的基本概念,malloc声明的优点

1,一个程序编译后生成的文件:

一个编译链接之后生成的可执行程序,在存储时分为代码段(text)、数据段(data)、未初始化数据段(BSS)
text段:存放程序的执行代码和一些常量,该存储区域是只读的
**data段:**存放程序中已初始化的全局变量,静态内存分配
**BSS段:**存放程序中未初始化的全局变量,静态内存分配
需要注意的是BSS段只记录大小并不分配空间,加载进内存执行时才根据记录的大小分配空间并清0
程序运行之后就多了三个内存区域:堆区、栈区和存储命令行参数、环境变量的区域
栈区:存放局部变量和函数参数,由编译器释放内存,无需手动释放。内存由高地址向低地址增长,内存大小由系统提前设定好,容易爆栈。栈的内存分配有两种:静态分配是编译器完成的,比如局部变量的分配。动态分配由函数alloca进行分配
堆区:堆内存都需要动态分配,并且需要手动释放。堆内存由低地址向高地址增长,采用链式存储结构,每次分配的内存块不一定是连续的,所以按照一定的算法搜索可用的足够大的空间,所以效率比栈低
在这里插入图片描述

(https://zhuanlan.zhihu.com/p/181631911?utm_source=wechat_session)

2,什么是堆栈<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

已下架不支持订阅

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鼾声鼾语

感谢您的支持鼓励!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值