jjzjj

c++ new运算符通过libstdc++占用大量内存(67MB)

我对libstdc++中的new运算符有一些疑问。我用C++编写了一个程序,但在内存管理方面遇到了一些问题。在用gdb调试以确定是什么在消耗我的ram之后,我得到了以下infoprocmappingsMappedaddressspaces:StartAddrEndAddrSizeOffsetobjfile0x4000000x4040000x40000/home/sebastian/Developement/powerserverplus-svn/psp-job-distributor/Release/psp-job-distributor0x6040000x6050000x10000x

c++ - libstdc++ 的 make_shared 布局是否在 gcc 4.x 和 gcc 6.x 之间发生了变化?

考虑以下由三个文件组成的最小示例:foo.h:#pragmaonce#includestructX{uint64_ti=0xdeadbeefdeadbeefULL;};voidfoo();foo.cxx:#include"foo.h"voidfoo(){std::make_shared();}main.cxx:#include#include"foo.h"templatestd::shared_ptrstd::make_shared();intmain(){foo();}然后用不同版本的gcc编译这两个翻译单元:$g++-4.8.2-g-std=c++11-O0-cfoo.cxx-of

c++ - Clang、std::next、libstdc++ 和 constexpr-ness

采用以下代码:#includeconstexprstd::arraya{};static_assert(std::next(std::begin(a))==std::begin(a)+1);使用-std=c++17GCC可以完美地编译它,但Clang会提示该表达式不是整型常量表达式。看起来问题出在std::next上,但是在C++17中应该是constexpr。尽管如此,std::next在std库中,而不是在编译器本身中,因此发生了一些奇怪的事情。为了让事情变得更好,如果您将-stdlib=libc++传递给Clang,该示例将完美编译。这是怎么回事?谁对谁错?编辑这个问题似乎与cl

c++ - 使用 lambda 构造 std::function 时 libstdc++ 和 libc++ 之间的不同行为

这个问题来自thisquestion.以下代码compilesfine将clang3.4与libstdc++结合使用:#includeintmain(){std::functionf=[](){};}但是failsmiserably使用clang3.4和libc++:Infileincludedfrommain.cpp:1:Infileincludedfrom/usr/include/c++/v1/functional:465:Infileincludedfrom/usr/include/c++/v1/memory:599:/usr/include/c++/v1/tuple:320:1

c++ - 使用包含不完整类型的 `boost::variant` 递归定义和访问 `std::vector` - libstdc++ 与 libc++

我正在尝试定义和访问“递归”boost::variant使用incomplete包装类和std::vector作为我的间接技巧。我的实现适用于libstdc++,但不适用于libc++。这是我定义变体的方式:structmy_variant_wrapper;usingmy_variant_array=std::vector;//;structmy_variant_wrapper{my_variant_v;templatemy_variant_wrapper(Ts&&...xs):_v(std::forward(xs)...){}};我正在使用std::vector引入间接(以便动态分配

c++ - 为 libstdc++ 生成 CTAGS(来自当前的 GCC)

我知道YoucompleteMe基于LLVM,但我想使用OmniCppComplete.这很好用,如果我使用modifiedheaders对于C++。此修改后的header已过时且不包含C++11中的任何内容。如果注意到我可以自己修改标题,例如:$find.-name'*.h'|xargssed-i's/__STL_BEGIN_NAMESPACE/namespacestd{/'$find.-name'*.h'|xargssed-i's/__STL_END_NAMESPACE/}/'或者使用这个设置:letOmniCpp_DefaultNamespaces=["std","_GLIBCX

c++ - 加载共享库 : libstdc++. so.6 时出错:错误的 ELF 类:ELFCLASS64

我正在尝试在我的CentOS系统中安装Qt。构建库时,出现此错误:/root/capture/qt-everywhere-opensource-src-4.7.0/bin/qmake:errorwhileloadingsharedlibraries:libstdc++.so.6:wrongELFclass:ELFCLASS64/root/capture/qt-everywhere-opensource-src-4.7.0/bin/qmake:errorwhileloadingsharedlibraries:libstdc++.so.6:wrongELFclass:ELFCLASS64

c++ - -static-libstdc++ 适用于 g++ 但不适用于纯 gcc?

作为引用,我使用的是MinGW(GCC5.3)。使用编译文件时g++file.cc-static-libstdc++它静态链接C++标准库(libstdc++)并生成1.9MB的可执行文件。无论如何运行gcc-lstdc++-static-libstdc++file.cc它仍然动态链接到libstdc++-6.dll并生成一个34KB的可执行文件。为什么-static-libstdc++仅适用于g++而不适用于纯gcc? 最佳答案 GCCmanual,LinkOptions说:-static-libstdc++Whentheg++p

c++ - 最新版gcc使用libstdc++.so.5

仍然使用libstdc++.so.5(而不是libstdc++.so.6)的最新版本的gcc是什么? 最佳答案 在GnuABIpolicy,你可以找到这个:...gcc-3.3.3:libstdc++.so.5.0.5gcc-3.4.0:libstdc++.so.6.0.0(与之前不兼容)...因此,除非他们没有列出版本,否则gcc-3.3.3就是您想要的版本。 关于c++-最新版gcc使用libstdc++.so.5,我们在StackOverflow上找到一个类似的问题:

ios - 找到链接到 stdc++ 的依赖项

我正在开发一个大约有50个依赖项的iOS项目。几乎所有这些都是用cocoapods管理的。有些是开源代码,有些是动态框架,有些是静态框架。在这个项目中,我想利用iOS12的新API,因此我必须使用Xcode10。我的问题是,似乎至少有1个依赖项使用了Apple在Xcode10中删除的libstdc++(请参阅here和there),导致在我尝试构建时出现以下错误:ld:找不到-lstdc++.6的库我发现我的Pods项目实际上链接到libstdc++,因为它的xconfig文件包含OTHER_LDFLAGS=$(inherited)-ObjC(...)-l"stdc++.6"(...)