gpt4 book ai didi

c++ - 通过const引用传递constexpr时在编译过程中占用大量内存

转载 作者:行者123 更新时间:2023-12-03 07:37:21 25 4
gpt4 key购买 nike

使用g++编译以下代码会消耗大量内存(超过5gb)。

#include <iostream>
#define N 100000

struct A {
int tab[N];
constexpr A(): tab{} {
for (size_t i = 0; i < N; ++i) tab[i] = i;
}
};

struct B {
int tab[N];
constexpr B(const A& a): tab{} {
for (size_t i = 0; i < N; ++i) tab[i] = a.tab[N-1-i] * 2;
}
};

constexpr A a;
constexpr B b(a);

int main(){ std::cout << b.tab[N-5]; }
看来这是由于在 const A&的constexpr构造函数中传递 B引起的-按值传递可以解决问题。
那里发生了什么事?
g++版本: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
在某些旧版本上也是如此。
使用clang-10编译时不会发生此问题。

最佳答案

似乎已在10.3和11版本中修复。
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96197

关于c++ - 通过const引用传递constexpr时在编译过程中占用大量内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65621617/

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