草庐IT

信号分配

全部标签

c++ - Eigen 库分配矩阵的元素?

我在Eigen库中遇到了以下矩阵分配hereMatrix3fm;m作为无聊方法的替代方法(m(0,0)=1;...等)。我的问题是使用第一种方法需要注意什么?因为我知道任何简化都是有代价的。 最佳答案 在第一种情况下,m(0,0)=1电话operator(Index,Index)和operator=(constScalar&s),这可能相当快。鉴于m调用重载operator和一串重载的逗号operator,(constScalar&s),请参阅此处的代码:http://eigen.tuxfamily.org/dox/CommaIni

C++ 允许我在运行时分配一个数组而不是给出一个错误

我读到数组大小需要在编译时知道。但是,当我这样做时,它编译并运行得很好,没有出现任何错误……这是怎么回事?#includeintmain(){intsize;std::cout>size;inta[size];return0;} 最佳答案 您没有将其编译为严格符合C++,而是usinganextensionborrowedfromC99.使用-Wall-Wextra-pedantic-std=c++14让编译器报错。请记住,符合标准的编译器只需要在遇到标准认为格式错误的构造时输出单个诊断。

c++ - 为堆分配整数值

#includeusingnamespacestd;intmain(){inti=newint;cout当我尝试将inti值分配给堆时,它显示错误:从“int*”到“int”的无效转换当我给int指针赋值时,它会赋值给它。为什么我们不能给堆赋值给int。是的,我知道尽可能避免给堆赋值。我看了很多stackoverflow帖子,每个人都解释了int*p=newint[10];请有人向我解释一下。感谢您的帮助。 最佳答案 newint返回指向int的指针,即int*。将其分配给int是明显的类型不匹配。newT返回的指针指向堆上的一个内

c++ - 复制构造函数为动态分配做了什么

这个问题在这里已经有了答案:WhatisTheRuleofThree?(8个答案)关闭6年前。我很好奇为什么拷贝构造函数对于我自己定义类的动态分配如此重要。我正在实现具有动态分配的低级c字符串类,这是我的类的快速ViewclassString{private:char*buf;boolinBounds(inti){returni>=0&&i我知道strdup()函数的部分并不正确,但我只是在做一些测试。我的问题是如果我没有复制构造函数而我的main()是intmain(){Stringb("abc");Stringa(b);cout编译器会告诉我doublefreeorcorrupti

c++ - 什么是智能指针管理的资源,而它们的内存不是new分配的?

我继续在C++Primer5th中看到与“动态内存”相反的“资源”:Bydefault,apointerusedtoinitializeasmartpointermustpointtodynamicmemorybecause,bydefault,smartpointersusedeletetofreetheassociatedobject.Wecanbindsmartpointerstopointerstootherkindsofresources.However,todoso,wemustsupplyourownoperationtouseinplaceofdelete.Ifyouu

c++ - 在 Qt 信号和槽中使用 lambda 语法并访问传递的参数

我有一个具有此签名的信号的类://CLASSAsignals:voidrequestToChangeRange(voltage_range_evr,current_range_ecr,uint16_tbits);还有另一个类有这样一个插槽(注意额外的参数)//CLASSCpublicslots:voidhandleRequestRangeChange(voltage_range_evr,current_range_ecr,uint16_tbits,uint16_tlimiter);然后我有一个类“B”,它充当所有其他类的交汇点。当“A”类发出信号时,“C”类应将其重定向到“B”类。但是

c++ - VC++ 中的动态数组大小和动态数组分配器

在编写自己的小型发现程序以弄清楚VisualC++如何为动态数组分配内存时,我有点困惑。我必须指出,我从未见过描述任何C++实现的new[]/delete[]运算符的这个问题的技术文档。一开始我以为new[]和delete[]如果解释成简单的C的话就是类似下面的东西:voidfake_int_ctor(int_this){printf("bornswith0x%08Xintheheap\n",_this);}voidfake_int_dtor(int_this){printf("dieswith%d\n",_this);}void*new_array(unsignedintsingle

c++ - 将(同步)堆栈分配的内存传递给其他线程是否安全?

最近听说栈中的内存不与其他线程共享,堆中的内存与其他线程共享。我通常这样做:HWNDotherThreadHwnd;DWORDcommandId;//initializecommandIdandotherThreadHwndstructMyData{intdata1_;longdata2_;void*chunk_;};intabc(){MyDatamyData;//initializemyDataSendMessage(otherThreadHwnd,commandId,&myData);//readmyData}这样做可以吗? 最佳答案

c++ - boost::asio 是否进行过多的小堆分配或者我错了吗?

#include#include#include#includeusingboost::asio::ip::tcp;classsession{public:session(boost::asio::io_service&io_service):socket_(io_service){}tcp::socket&socket(){returnsocket_;}voidstart(){socket_.async_read_some(boost::asio::buffer(data_,max_length-1),boost::bind(&session::handle_read,this,bo

c++ - 无法分配 tr1::shared_ptr

我有一个以tr1::shared_ptr作为成员的类,如下所示:classFoo{std::tr1::shared_ptrbsp;voidBar();}在成员函数Bar中,我尝试这样赋值:bsp=newTCODBsp(x,y,w,h);g++然后给我这个错误nomatchfor‘operator=’in‘((yarl::mapGen::MapGenerator*)this)->yarl::mapGen::MapGenerator::bsp=(operatornew(40u),(,((TCODBsp*))))’/usr/include/c++/4.4/tr1/shared_ptr.h:8