草庐IT

信号分配

全部标签

c++ - C++中对象的动态内存分配

我正在尝试为一个非常简单的C++程序中的对象动态分配(它不像现在那样动态,但最终会动态分配)内存。我是新来的类(class),最近才开始玩C++,把C抛在了后面。这是代码:#includeusingnamespacestd;classTest{private:inti;public:Test(int);~Test();voidprint();};Test::Test(intii){i=ii;}Test::~Test(){i=0;coutprint();//thisworksaswellfor(inti=0;iprint();/*thisshowsthatthevalueofi=1..s

c++ - Boost Spirit 信号成功解析,尽管 token 不完整

我有一个非常简单的路径构造,我正在尝试使用boostspirit.lex进行解析。我们有以下语法:token:=[a-z]+path:=(token:path)|(token)所以我们在这里只讨论冒号分隔的小写ASCII字符串。我有三个示例“xyz”、“abc:xyz”、“abc:xyz:”。前两个应该被认为是有效的。第三个以冒号结尾,不应被视为有效。不幸的是,我的解析器认为这三个都是有效的。语法不应允许空标记,但显然spirit正在这样做。我错过了什么让第三个被拒绝?此外,如果您阅读下面的代码,在注释中有另一个版本的解析器要求所有路径以分号结尾。当我激活这些行时,我可以获得适当的行为

【Linux】信号概念与信号产生

信号概念与信号产生一、初识信号1.信号概念2.前台进程和后台进程3.认识信号4.技术应用角度的信号二、信号的产生1.键盘组合键2.kill命令3.系统调用4.异常(1)观察现象(2)理解本质5.软件条件闹钟一、初识信号1.信号概念生活中类似信号的概念也不少,例如上课铃声响,就是信号的发出,我们听到上课铃声,就是接收到信号,我们快速回到教室上课就是对信号做出处理。那么我们是怎么认识这些信号的呢?那必定是有人教我们,然后我们记住了。而且我们不单单要认识信号,还要识别信号,知道信号的处理方法!当信号产生了,我们可能并不立即处理这个信号,我们可能会在合适的时候再去处理,因为我们可能还有更重要的事情要做

c++ - 临时字符串的内存分配

我有一个关于字符串的问题,或者特别是关于字符串使用的内存的问题。我正在使用MSVC2010。考虑这段代码:voidTest(){LPWCSTRString=L"Testing";PrintString(String);}voidPrintString(LPWCSTRString){//printStringtoconsoleorsimilar}以这种方式创建和使用字符串是否安全?当字符串超出范围时,是否释放了为存储字符串分配的内存? 最佳答案 是的,它是安全的,但实际上没有分配;)L"Testing"将保留在您的exe文件的只读部分

c++ - 在 Qt 中将结构传递给信号

我想在Qt中发送一个带有信号的结构。我怎样才能做到这一点?我知道如何用信号发送整数、字符串、图像等,但对结构部分感到困惑。我阅读了一些帖子并发现了有关Q_DECLARE_METATYPE()的信息,但我不了解如何使用它。typedefstruct{intEmpId;QStringName;}StandardData;classData::publicQObject{Q_DECLARE_METATYPE(StandardData);signals:voidSignalData(constStandardData&f_objStandardCan);}我得到的错误1.非命名空间范围类的显式

c++ - 使用 malloc() 为 const char 字符串动态分配内存

我正在编写一个程序,它从.ini文件中读取一个值,然后将该值传递给一个接受PCSTR(即constchar*)的函数。函数是getaddrinfo()。所以,我想写PCSTRReadFromIni()。要返回常量字符串,我计划使用malloc()分配内存并将内存转换为常量字符串。我将能够获得从.ini文件中读取的确切字符数。这种技术可以吗?我真的不知道还能做什么。以下示例在VisualStudio2013中运行良好,并根据需要打印出“hello”。constchar*m(){char*c=(char*)malloc(6*sizeof(char));c="hello";return(co

c++ - QSignalSpy 等待和两个信号

我正在尝试为基于Qt的项目(Qt5、C++03)中的类编写单元测试。classTransaction{//Thisisjustasampleclass//..publicsignals:voidsucceeded();voidfailed();}Transaction*transaction=newTransaction(this);QSignalSpyspy(transaction,SIGNAL(succeeded()));transaction->run();spy.wait(5000);//waitfor5seconds我希望我的测试运行得更快。如果交易失败,如何在发出信号fai

c++ - 引用的条件分配

有比我对C++标准理解更深的人可以详细说明一下吗?这是我的示例程序#include#includeintmain(intargc,char*argv[]){conststd::stringmessage("helloworld");std::cout0)?message:"";std::cout在一台机器上它这样做:#g++--version&&g++str_test.cpp&&./a.outg++(Debian4.7.2-5)4.7.2Copyright(C)2012FreeSoftwareFoundation,Inc.Thisisfreesoftware;seethesourcef

c++ - C++ 中的分配器用法(STL 树)

我最近一直在尝试了解C++分配器的工作原理,并且一直在寻找STL库用于类似std::set之类的红黑树的实现。或std::map,但有些事情我无法理解。首先要做的是从容器必须存储的类型转换分配器-_Val-树使用的节点类型-_Rb_tree_node-使用重新绑定(bind)模板:typedeftypename__gnu_cxx::__alloc_traits::templaterebind>::other_Node_allocator;typedef__gnu_cxx::__alloc_traits_Alloc_traits;这个我可以解决。现在,当一个元素被插入并且它需要创建一个新

c++ - 从 C++ 中的函数返回动态分配的缓冲区的最佳模式是什么?

我正在重构一些旧代码。有一个C风格的函数是这样工作的:(显然我在这里简化了它)intLoadData(char**buf1,int*buf1Len,char**buf2,int*buf2Len){*buf1Len=DetermineLength1();*buf1=(char*)malloc(*buf1Len);//Fillbuf1*buf2Len=DetermineLength2();*buf2=(char*)malloc(*buf2Len);//Fillbuf2intresult=0;//OrsomeotherINTdependingofresultreturnresult;}现在,