MEMORY_BASIC_INFORMATION
全部标签 即使在模板中我可以有任何类型,函数to_string对基本字符串不起作用:例如:std::stringstr("mystring");my_class(str);用这个仿函数定义:templatevoidoperator()(valuetypevalue){...private_string_field=std::to_string(value);不起作用。这是错误:error:nomatchingfunctionforcallto‘to_string(std::basic_string&)’避免它的最佳方法是什么。事先,我要求避免仅仅因为一些常见的关键字就链接到不相关的问题。
我在我的C++代码中定义了is_string:#includetemplatestructis_string{staticconstboolvalue=false;};templatestructis_string>{staticconstboolvalue=true;};intmain(){std::cout::value::value对于std::string和std::wstring都是如此。但我需要这样的谓词:is_string::value//tobetrueis_string::value//tobefalseis_string::value//tobefalseis_st
阅读thisgreattutorial关于堆栈与堆,我对这句话有疑问:在堆栈上分配的所有内存在编译时都是已知的。我的意思是,如果我处于取决于用户输入的for循环中(i从0到X),并且在for我在堆栈上分配内存(例如创建一些类的新实例并放入类容器中),它不知道编译程序时堆栈将如何增长(它错过了用户的输入)。我是不是误会了什么? 最佳答案 对读者来说,所做的陈述稍微简化了一点。你是对的,堆栈本质上是动态的,实际分配的数量可能因动态输入而异。这是一个带有递归函数的简单示例:voidf(intn){intx=n*10;if(x==0)ret
本题旨在使用std::byte具有标准输入输出。是否有任何计划为read(_bytes)添加适当的函数重载?和write(_bytes)到basic_istream的接口(interface)和basic_ostream在未来的标准?有什么理由反对它?我知道CharT*-应保留过载。我可以做什么来使用std::byte?我目前在我的项目功能中定义std::istream&read(std::istream&,std::byte*,std::streamsize)std::ostream&write(std::ostream&,conststd::byte*,std::streamsiz
我正在尝试定义std::basic_string,allocator>的完全特化这是由定义的(在g++中)标题。问题是,如果我包含首先,g++将typedef视为basic_string的实例化并给我错误。如果我先进行特化,那么我就没有问题。我应该能够在之后定义我的特化已经包括了。我必须做什么才能做到这一点?我的代码:#include//#include//classbasic_string,allocator>{public:intblah(){return42;}size_tsize(){return0;}constchar*c_str(){return"";}voidreserv
我有一个使用basic_istream作为参数的函数,我有一个std::string和我需要传递给它的数据。我该怎么做? 最佳答案 您可以将字符串数据放入流中:std::stringx;std::stringstreamss(x);//putstringintostreamfunction_taking_stream(ss); 关于c++-当你有一个std::string时如何使用basic_istream,我们在StackOverflow上找到一个类似的问题:
我正在阅读C++ConcurrencyinAction安东尼·威廉姆斯。目前我在他描述memory_order_consume的地方。在那block之后有:NowthatI’vecoveredthebasicsofthememoryorderings,it’stimetolookatthemorecomplexparts这让我有点害怕,因为我不完全理解几件事:dependency-ordered-before与synchronizes-with有何不同?他们都创建了先发生后发生的关系。确切的区别是什么?我对以下示例感到困惑:intglobal_data[]={…};std::atomi
我对唯一指针的释放方法有点困惑。这是我的示例程序。classTest{public:Test(){std::coutptr(newTest());ptr.release();//memoryleak//ptr.reset();//thisisokbutnotnecessaryreturn0;}输出:ctor因为它没有打印dtor我假设它没有调用Test的析构函数,这将导致内存泄漏。是吗? 最佳答案 release一词的意思是“将所有权释放给调用者”。所以不,它没有调用析构函数。如果您想显式调用析构函数,那么您必须手动删除releas
这适用于VisualStudio,并且适用于一台计算机上的GCC4.9.2。但在不同的计算机上,我认为它是相同的GCC4.9.2编译器,但它给了我这个错误。我错过了什么吗?怎么回事?#include#include#includeusingnamespacestd;intmain(){stringfilename;filename="teststring";ofstreamfout;fout.open(filename);fout.||===Build:Debuginfileiotest(compiler:TDM32GNUGCCCompiler4.9.2dw2)===|F:\Users
我有一个关于heap和malloc的简单问题:当我们使用malloc分配一些内存空间时,如下所示:int*p;p=(int*)malloc(10*sizeof(int));它实际上在堆中分配了10个单词。但是,我的问题是:实际使用的内存空间真的是10个字?或者还有其他额外的空间需要存储内存大小的值?或者,甚至,因为堆的结构是链表,是否有其他内存空间用于存储指向堆中列表的下一个节点的地址? 最佳答案 它完全依赖于实现。a)它可以在每个分配的节点之前有几个字节,其中包含节点的大小、指向下一个节点的指针,可能还有前一个节点指针和节点类型。