草庐IT

static-memory-allocation

全部标签

c++ - 如何在 C++ 中将 static_assert 用于 constexpr 函数参数?

我的库中有几个简短的constexpr函数可以执行一些简单的计算。我在运行时和编译时上下文中都使用它们。我想在这些函数的主体中执行一些断言,但是assert(...)在constexpr函数和static_assert中无效(...)不能用于检查函数参数。例子:constexprintgetClamped(intmValue,intmMin,intmMax)noexcept{assert(mMinmMax?mMax:mValue);}有没有办法检查函数是否在运行时或编译时常量中执行,并且仅当它在运行时执行时才执行断言-时间?constexprintgetClamped(intmValu

c++ - static_assert - 一种动态自定义错误消息的方法

有没有办法让static_assert的字符串动态自定义然后显示?我的意思是://pseudocodestatic_assert(Check_Range::value,"Valueof"+typeof(T)+"typeisnotsogood;)"); 最佳答案 没有,没有。但这并不重要,因为static_assert是在编译时求值的,如果出现错误,编译器不仅会打印消息本身,还会打印实例堆栈(在模板的情况下)。看看这个综合示例inideone:#includetemplatestructIsInteger{staticboolcons

c++ - 重载 static_cast?

所以,前几天我参加了考试,其中一个问题与此非常相似:我们有一个类叫做Square其中包含一个变量intside.我们怎样才能使cout(aSquare)成为可能会打印出aSquare的面积吗?这可能吗? 最佳答案 有可能做到这一点,但不能通过重载static_cast().您可以通过重载类型转换运算符来实现:classSquare{public:Square(intside):side(side){}operatorint()const{returnside*side;}//overloadedtypecastoperatorpri

C# 控制台日志记录 : will it have memory issues?

所以我正在使用一个控制台应用程序,它一次可以持续数天、数周或数月。它将有用的信息记录到文本文件中,但它也会写入控制台。我是否需要担心控制台内存由于某种原因没有被清除?好像还可以。我写了一个小测试来运行午餐。我添加了一些随机间隔的字母,以便我的同事认为我一定是在处理一些大东西并且可以吃更长的午餐。for(Int64i=0;i因此,内存在不写入文件的情况下看起来很稳定。我只是想确认一下,如果我确实有内存问题,那不是来自控制台...如果我也将其记录到文本文件中,内存确实会略有增加。 最佳答案 Itlogsusefulinformation

windows - 执行 svn 合并时出现 "out of memory - terminating application"错误

尝试在32位WindowsXP下使用Subversion1.6.9执行命令行svnmerge时,我们看到以下错误。Outofmemory-terminatingapplication.ThisapplicationhasrequestedtheRuntimetoterminateitinanunusualway.Pleasecontacttheapplication'ssupportteamformoreinformation.此时检查Windows任务管理器显示以下内存使用情况svn.exe进程的峰值内存使用量超过1.8GB。顺便说一句,我们在尝试使用TortoiseSVN执行合并时

c++ - 为什么报错LINK2005 : object already defined error disappears when I declare the object as static

我在头文件中定义了以下结构和结构对象,如下所示:structSTConfigurationDetails{boolbAutoStart;boolbAutoLog;boolbAutoScan;boolbAutoMount;boolbAutoOpen;boolbAutoDetectLast;};structSTConfigurationDetailsg_objConfigurationDetails;在自己的头文件中,我同时拥有使用g_objConfigurationDetails的方法和方法体。当我将头文件包含到另一个cpp文件并调用该方法时,这工作正常。但是当我将头文件添加到另一个cp

c++ - 仅使用 600 MB 内存时调整 QByteArray 的大小会抛出 std::bad_alloc

我是Qt的新手,需要加载和处理一些大文件。相反,我的内存不足。以下代码说明了我的问题:QByteArraymem;for(inti=1;i当它达到600MB时,我得到std::bad_alloc。那真的不应该发生。是否有增加堆大小的secret开关?我在Windows上使用Qt5.0.2和VisualC++10.0x86编译器。 最佳答案 AFAIKQByteArray分配一个连续的内存块。虽然您的应用程序可能仍有大量可用虚拟内存,但很有可能您的数组分配到的当前内存块无法进一步扩展,因为您的内存管理器没有足够大的连续block。如果

c++ - 为什么在 size_t 的情况下抛出 bad_alloc() 异常

我正在处理下面的代码,当我执行这段代码时,我得到了一个std::bad_alloc异常:int_tmain(intargc,_TCHAR*argv[]){FILE*pFile;size_tstate;pFile=fopen("C:\\shared.tmp","rb");if(pFile!=NULL){size_trt=fread(&state,sizeof(int),1,pFile);char*string=NULL;string=newchar[state+1];fclose(pFile);}return0;}下面这行导致抛出异常:string=newchar[state+1];为什

c++ - vector 正在抛出 bad_alloc

我有以下抛出std::bad_alloc异常的代码:std::vector>myVector(nlines);for(inti=0;iiVector(ncolumns);myVector[i]=iVector;}catch(std::exception&e){/*catchesabad_allochere*/}}}当nlines大约为500,000(ncolumns通常小于10)时,这段代码似乎有效,但是当我在一个全尺寸数据集上尝试此代码时,nlines=2,600,000我得到bad_alloc异常。我有12GB的内存,在运行程序时查看我的内存使用情况,它从28%(开始前)上升到42

c++ - PROCESS_MEMORY_COUNTERS 结构中的哪个成员给出了当前使用的内存

下面是PROCESS_MEMORY_COUNTERS结构typedefstruct_PROCESS_MEMORY_COUNTERS{DWORDcb;DWORDPageFaultCount;SIZE_TPeakWorkingSetSize;SIZE_TWorkingSetSize;SIZE_TQuotaPeakPagedPoolUsage;SIZE_TQuotaPagedPoolUsage;SIZE_TQuotaPeakNonPagedPoolUsage;SIZE_TQuotaNonPagedPoolUsage;SIZE_TPagefileUsage;SIZE_TPeakPagefile