C++20中含Eigen成员的结构体内存分配问题咨询
关于Eigen固定大小可向量化结构体内存分配问题的解答
核心结论:使用符合版本要求的编译器(GCC>=7、clang>=5、MSVC>=19.12)以C17及更高标准(包括C20)编译时,这个内存分配问题已被完全解决,不会再出现。
原因说明:
Eigen文档中提到的“以C17模式编译”是解决该问题的最低标准要求——C17标准引入了对内存对齐、分配规则的完善支持(比如更严格的alignas语义、标准库分配器的对齐适配),这些特性是解决Eigen结构体内存问题的关键。而C20作为C17的后续标准,完全继承并兼容了这些特性,同时没有引入会破坏该兼容的变更。文档表述解读:
原文“若仅使用足够新版本的编译器以C17模式编译,则编译器会处理所有问题”的意思是:只要编译器版本达标,且编译标准不低于C17,就无需担心这个问题。更高版本的C标准(如C20)只会提供更多特性,不会让已解决的内存分配问题复现。
内容的提问来源于stack exchange,提问作者marco
相关产品推荐
相关产品推荐

