首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过常量引用传递constexpr时,编译过程中会消耗大量内存

通过常量引用传递constexpr时,编译过程中会消耗大量内存
EN

Stack Overflow用户
提问于 2021-01-08 07:56:50
回答 1查看 75关注 0票数 2

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

代码语言:javascript
复制
#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]; }

这似乎是由于在B的常量表达式构造函数中传递了一个const A&造成的--通过值传递解决了这个问题。

g++版本:(Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0。在一些老版本上也是一样的。

使用clang-10编译时不会出现此问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-09 17:48:25

在版本10.3和11中似乎已修复。

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96197

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65621617

复制
相关文章

相似问题

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