草庐IT

binary_operation

全部标签

c++ - boost 序列化 binary_oarchive 崩溃

首先,我填充了一个相当大且相互关联的结构。然后我将其序列化为二进制存档。该结构的大小取决于我提供给程序的数据。我看到该程序使用~2GB内存来构建预期和可接受的结构。然后我开始序列化对象。我看到程序在序列化时占用RAM。RAM使用率不断增长,直到接近100%。交换使用仍然是0字节。然后应用程序崩溃。new上的bad_alloc除外为什么序列化过程会占用如此多的RAM和时间?为什么在交换为空时分配内存时会崩溃?回溯太长,无法完整粘贴。#00xb7fe1424in__kernel_vsyscall()#10xb7c6e941inraise(sig=6)at../nptl/sysdeps/un

c++ - 在 C++ 中绕过 operator new 的重写

有没有办法绕过operatornew的覆盖?是这样的:void*::operatornew(std::size_tsize){void*p=(::operatornew(size));//Butoriginal,_not_infiniterecursion//dostuffwithpreturnp;}背景:我有一些遗留代码,我们最近切换到使用VisualStudio2012进行编译。现在,当malloc无法_heap_alloc足够的内存块时,我们会随机崩溃。(是的,代码到处都是小的内存泄漏和其他不良行为。但不幸的是,彻底清理是不现实的,大约有500000SLOC。)我目前的理论是,原

c++ - 通过 && 在 std::vector push_back() 和 std::map operator[] 中获取参数

这个问题在这里已经有了答案:Whatismovesemantics?(11个答案)关闭9年前。我在std::vector::push_back()实现中发现了这个:voidpush_back(_Ty&&_Val){//somecodehere}这在std::mapoperator[]实现中:mapped_type&operator[](key_type&&_Keyval){//somecodehere}为什么_Val和_Keyval是按引用方式取的?通过引用引用的方式进行论证是如何工作的?与引用引用相比,这种方法有什么好处?附言这不是逻辑上的“与”,我明白这一点。

CMake 添加子目录错误 : "When specifying an out-of-tree source a binary directory must be explicitly specified"

我的目录结构如下:rootlibACMakeLists.txtClassA.cpplibBCMakeLists.txtClassB.cppsharedCodeenums.hAbstractClass.hCMake文件中如何包含sharedCode目录?这样classA(在libA中)和classB(在libB中)都可以使用enums.h和AbstractClass.h?在我尝试使用的CMakeLists.txt中:add_subdirectory(../sharedCode)但它给出了错误add_subdirectorynotgivenabinarydirectorybutthegiv

c++ - std::function 的 operator== 的真正目的是什么?

我不止一次看到std::function的operator==被误用,我不得不解释它的真正用途是什么。为了有利于future读者的清晰起见,here是文档。上面提到的文档说:Comparesa std::function withanullpointer.Emptyfunctions(thatis,functionswithoutacallabletarget)compareequal,non-emptyfunctionscomparenon-equal.也就是说,std::function也有operatorbool()(here是文档),其行为方式几乎相同并且可以使用代替比较my_

c++ - 创建类索引器 operator[] 允许字符串参数(字符串索引)

我想用C++创建一个类。此类必须使用集合进行管理。好的,没问题,我当然想使用operator[],但在这种情况下,我希望不是按位置索引,而是按名称索引==>这意味着使用字符串索引器。似乎这种东西对我的编译器不太友好://Inhppclassmyclass{......std::stringoperator[](conststd::string&name);}//Incppstd::stringmyclass::operator[](conststd::string&name){...}//Inmainmyclassm;std::stringvalue=m["Name"];编译器告诉我他

c++ - 为什么 ostream::operator<< 是 char 参数的全局函数?

根据http://www.cplusplus.com/reference/iostream/ostream/operator%3C%3C/operator 最佳答案 operator对于streambuf*(或int这听起来更简单)和char既可以作为成员(member)运营商实现,也可以作为非成员(member)(免费)运营商实现。我的猜测是,这是由于在定义C++时出现了追溯兼容性问题:可能较旧的代码依赖于成员operator,因此他们决定不将其作为免费运营商移动。C++标准库(以及STL)有许多像这样的不均匀性。

c++ - operator() 的典型用途是什么

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Howcanoverloadingoperator“functioncall”inC++beuseful?我经常看到括号运算符operator()在类或结构上被重载。我自己从来没有遇到过这样的需求,想知道这个运算符的典型用途/需求是什么?例如,重载operator==被接受为返回true或false,基于与提供的参数的某种相等性。这具有特定的可接受和预期的行为。

c++ - OpenCV 错误 : Sizes of input arguments do not match (The operation is neither 'array op array' )

我正在做一个在树莓派上使用opencv的项目。我遇到了一个看起来很简单的障碍,但我无法解决问题。首先,这是我的代码的一部分:{gray=cvarrToMat(py);///cvShowImage("camcvWin",py);//displayonlygraychannelif(img_num%2==1){cv::imwrite("/home/pi/test/Gray_2Image1.jpg",gray);}elseif(img_num%2==0){cv::imwrite("/home/pi/test/Gray_2Image2.jpg",gray);cv::Matimg2=cv::im

c++ - 重载运算符(operator) body 的奥秘

假设我有以下类(class):树与树;对象树包含一个树对象数组。下面是Trees和Tree类的内容:树.h:#pragmaonce#include"Tree.h"classTrees{private:Treem_Tree[20];intiTrees;public:Trees(void):iTrees(0){}TreeGetTree(inti){returnm_Tree[i];}voidAddTree(Treetree){m_Tree[iTrees++]=tree;}};树.h:#pragmaonce#includeclassTree{private:std::stringName;bo