加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 堆栈上保留的数组大小是否影响除内存使用之外的任何其他资

发布时间:2020-12-16 10:01:22 所属栏目:百科 来源:网络整理
导读:这仅仅是出于兴趣,我个人使用C Builder 2009 假设我分配:wchar_t Buffer [32]或者我分配wchar_t Buffer [512] 第二个调用会分配更多内存,因此您可能会认为第二个调用在内存使用方面更昂贵. 但是,通过这种方式分配更多内存还有其他可能吗?是否涉及更多说明
这仅仅是出于兴趣,我个人使用C Builder 2009

假设我分配:wchar_t Buffer [32]或者我分配wchar_t Buffer [512]

第二个调用会分配更多内存,因此您可能会认为第二个调用在内存使用方面更昂贵.

但是,通过这种方式分配更多内存还有其他可能吗?是否涉及更多说明? CPU使用率更高?

就是想 ?

解决方法

这是”分配”堆栈内存.所有这些都需要调整堆栈指针.如果你写一个像这样的函数:

void foo()
{
    char c[32];
    ...
}

生成的程序集看起来像(在64位计算机上):

.cfi_startproc
pushq   %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6,-16 
movq    %rsp,%rbp
.cfi_def_cfa_register 6
subq    $48,%rsp        // This is the actual "allocation" on the stack

如果将其更改为char c [512],则唯一改变的是:

subq    $528,%rsp // Allocation of 512 bytes on stack

CPU指令或时间没有区别.唯一的区别是第二次使用了更多的有限数量的堆栈内存.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读