草庐IT

全局剪枝

全部标签

c++ - 覆盖全局 operator new 以跟踪巨大的内存分配?

我正在尝试生成大型单体应用程序的特殊构建。我试图解决的问题是跟踪难以重现的巨大内存分配(30-80GB,根据操作系统报告判断)。我认为问题是std::vector调整为负32位整数值。表现出这种行为的唯一平台是Solaris(也许它是唯一能够成功分配此类连续内存块的平台)。我可以用我的类全局替换std::vector,将所有调用委托(delegate)给真实vector,观察可疑分配(size>0x7FFFFFFFu)吗?也许有选择地替换采用size_t和resize()方法的构造函数?甚至可能劫持新的全局运营商? 最佳答案 为什么

c++ - 全局设置 stringstream 的精度

我在我的整个项目中使用了stringstream,它有超过30个文件。我最近克服了一个由stringstring引起的问题,在这个问题中我将double解析为stringstream并且丢失了精度。所以现在我想为所有文件设置精度。有什么办法可以将它设置在全局某处,这样我就不需要在每个文件的任何地方进行更改。有人建议我看看是否可以使用语言环境。请帮我解决这个问题,如果您有代码或任何代码链接,它会更有用。 最佳答案 可能最简单的方法是用您自己的继承自stringstream的类替换您在整个程序中对stringstream的使用:clas

C++ 输入全局变量可跨多个类访问

我正在开发一个项目,该项目采用多个命令行参数,并将这些参数用作后续模拟的参数。(我想批量运行大量实验)。在运行时设置全局变量的最佳方式是什么?全局方面:变量可能会在运行期间发生变化,但应该可以跨大量类访问。目前我将它们读入我包含在其他类中的Config对象中。如果有人有更好的想法(xml?)我洗耳恭听。谢谢! 最佳答案 将所有相关的变量集中在一个屋檐下以便于访问。可能有2种方法:(1)命名空间全局变量namespaceConfiguration{externinti;externboolb;externstd::strings;}(

c++ - 可以在全局对象构造函数中进行打印/记录还是未定义的行为?

#includestructA{A(){std::cout根据C++标准,驻留在多个文件中的全局对象初始化顺序是未指定的。即在1个文件中定义的全局对象将按从上到下的顺序调用它们的构造函数。但是,如果有多个这样的文件,那么哪个文件将是倒数第一个,是实现定义的还是未指定的。现在,std::cout和my_a都是全局对象。这意味着上面的代码是一个UB,它是否正确(即初始化失败)?编译器可能足够聪明,可以在移动到其他对象之前先初始化std对象。仍然为了清楚起见,是否有任何完整的证明方法可以对跨多个文件的全局对象执行日志记录? 最佳答案 是的

C++ 初始化全局数组

大家好。我是一名经验丰富的Java程序员,正在学习C++。现在我有一点初学者的问题。我有一个int类型的数组变量x。用户会在方法B中输入x的大小,我想在方法A中使用x。voidmethodA(){usingintx[]blahblahblah}voidmethodB(){intn;cin>>n;intx[n];//HowcanIusethisintxinmethodAwithoutgettingerror:storagesizexisunknown.//Ortheerror'x'wasnotdeclaredinthisscope.}编辑:参数传递不是我正在寻找的解决方案。双重编辑:我确

c++ - std::regex 等效于 '/g' 全局修饰符

在Perl中,我可以这样做:$text='1747239';@matches=($text=~m/(\d)/g);#@matchesnowcontains('1','7','4','7','2','3','9')使用C++正则表达式匹配,复制此行为的最佳方法是什么我得到一个包含所有匹配项的匹配集?我现在有这个:-compiledRegex=std::regex(regex,std::tr1::regex_constants::extended);regex_search(text,results,compiledRegex);intcount=results.size();//Allo

c++ - 两个文件中相同函数/全局变量的不同声明

在C和C++的情况下,我有2个关于相同函数和全局变量在两个文件中的不同声明的问题。不同的函数声明考虑以下代码片段:file_1.cvoidfoo(inta);intmain(void){foo('A');}file_2.c#includevoidfoo(chara){printf("%c",a);//prints'A'(gcc)}正如我们所见,原型(prototype)不同于位于file_2.c,但是,该函数打印预期值。如果涉及到C++,上面的程序由于undefined而无效在链接时引用foo(int)。这可能是由存在其他函数签名-与C相比,其中函数名称不包含任何额外的字符表明函数参数

c++ - 在 C++ 的函数中创建一个没有全局变量的数组

所以我想在函数中创建一个数组,其大小由作为参数传入的数字设置。这是一个例子:voidtemp_arr(constintarray_size){inttemp_arr[array_size];//ERRORarray_sizeneedstobeaconstantvalue//Thendosomethingwiththetemparr}即使参数是constint,也不行。我不想使用全局常量,也不想使用vector。我只是好奇,因为我正在学习C++。我希望它能够使每次调用函数时数组大小都不同。是否有解决方案,或者我是否在调用函数之前创建一个const变量和数组?

c++ - 为什么命名空间中的函数看不到我全局定义的 operator<<?

我定义了一个operatorstd::pair的输出函数实例,供某些单元测试使用,如果它们不符合预期,则希望打印值。我的测试代码也有对作为另一个类的成员持有,该类有自己的operator。—特别是boost::optional,但为了示例,我定义了一个简单的Container在这里上课。问题是operator对于std::pair值似乎在operator中不可见容器类。#include#includetemplatestd::ostream&operatorconst&pair){returnoutstructContainer{Tvalue;};templatestd::ostrea

c++ - 全局变量是如何存储的?

据我所知,有两种类型的全局变量,已初始化和未初始化。它们是如何储存的?它们都存储在可执行文件中吗?我可以想到将初始化的全局变量的初始值存储在可执行文件中。但是未初始化的需要存储什么?我目前的理解是这样的:可执行文件被组织成几个部分,例如.text、.data和.bss。代码存储在.text段中,初始化的全局或静态数据存储在.data段中,未初始化的全局或静态数据存储在.bss段中。感谢您花时间查看我的问题。更新1-2010年11月3日上午9:56我在这里找到了一个很好的引用:SegmentsinAssemblyLanguageSource-Buildingthetextanddatas