gpt4 book ai didi

c++ - 局部变量分配可以抛出吗?

转载 作者:搜寻专家 更新时间:2023-10-31 02:11:27 25 4
gpt4 key购买 nike

这可能是个愚蠢的问题,但我很难在网上找到有关它的信息。

我知道operator new可以扔一个bad_alloc exception如果分配内存失败,但局部变量分配会发生什么情况?

假设我有一个系统,其中没有更多可用内存并且程序执行如下操作:

void do_something(){
int a = 0;
}

会发生什么?如何分配“a”所需的空间?能扔吗?

我从某处看到类似这样的代码得到了问题:

void do_something() noexcept {
// some local variables being allocated
}

这让我想知道 no except 和本地内存分配之间的关系。另外,为了让事情变得更加困惑,我看到了 this这让我想知道内存分配实际发生的时间......

最佳答案

我不认为 do_something(){ int a = 0; } 可以抛出。没有为“a”分配存储这样的东西,在大多数情况下,这将在处理器寄存器中,您甚至不知道它是否会存储在内存中..

关于

void do_something() noexcept {

这只是告诉编译器您的函数 do_something 不能抛出 C++ 异常,因此编译器可能会做出一些假设并可能进行一些额外的优化。

关于c++ - 局部变量分配可以抛出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43553601/

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