草庐IT

堆栈iOS

全部标签

c++ - 有没有办法在 C++ 中调用 new 时获取堆栈跟踪?

我有一个长时间运行的C++程序,通常使用gcc(g++)编译。我已经使用valgrind来验证没有内存泄漏,所以我不是在寻找泄漏检测器。不过,我关心的是临时缓冲区/对象上的内存碎片和不必要的新/删除对。有没有办法记录所有对new的调用(即使它们发生在STL容器内),提供堆栈跟踪以便我可以在我的代码中找到它们?我尝试了mtrace,但这只适用于C++——当我查找负责的代码行时,它最终说所有分配都发生在全局新分配器中。不知何故,valgrind的memcheck几乎可以做我想做的,因为它显示了内存分配的堆栈跟踪。不幸的是,它们似乎只为分配而呈现,没有匹配的释放。

c++ - 以两种数据类型作为参数的堆栈 STL

本程序取自cplusplus.com#include#include#include#includeusingnamespacestd;intmain(){dequemydeque(3,100);//dequewith3elementsvectormyvector(2,200);//vectorwith2elementsstackfirst;//emptystackstacksecond(mydeque);//stackinitializedtocopyofdequestack>third;//emptystackusingvectorstack>fourth(myvector);co

branch.io getShorturl通用分支对象

BranchUniverSalObject的GetShorturl功能通常可以正常工作。但是,有时它会产生一个非常大的URL,并带有大量的元数据。URL通常看起来像:http://exampleapp.com/alias但是,每隔一段时间,我无缘无故地说,我会从链接属性中收回一个包含所有元数据的URL。就像是:http://exampleapp.com/a/key_live_nin0QyFNUZ2BYh13tBpioevJWClfBoDS?%24identity_id=142989785412097588?alias=alias&channel=app&feature=invi

apache,ssl,nodejs,express,socket.io,数字海洋设置?

我尝试设置一些mod_proxy方法(下面的链接),但是当活动时,它会给我一条服务不可用的消息(对不起,不是服务器/sysadminGuy)我们有一个没有任何SSL的开发服务器,并且可以很好地工作。到目前为止,我们的代码(nodejs/server.js):varapp=require("express")();varhttps=require("https");vario=require("socket.io")(https);varport=3000;varprivateKey=fs.readFileSync('/etc/apache2/ssl-certificate/site.key',

使用java.io.randomaccessfile,如何编写文件并继续向开始添加内容?

如何使用RandomAccessFile从一开始写入文件?我正在写入3MB字节块中的文件,直到达到100MB进行基准测试。看答案如何使用RandomAccessFile从一开始写入文件?你必须移动内容已经编写。想象一下硬盘作为乐高基准板。您可以从一个边缘开始,将块一个接一个地放置。这些块是您要编写的数据块,任何连续的块行都是“文件”。但是,如果您想将某些内容放在“文件”的开头,则必须将已经在那里的块中拿走,请将新块放在其位置,然后放回其后面的新锁。

c++ - 错误 : 'ios_base' has not been declared

我正在使用libcurl下载序列化代码并将其打开,但是,我收到一个错误,看起来fstream丢失了,但它包含在内。我环顾四周,但很少发现错误。下面是错误和代码。错过了什么?编译错误输出g++-gtestGetprice2.cpp-otestGetprice2.o-std=gnu++11-lcurltestGetprice2.cpp:Infunction'intgetData()':testGetprice2.cpp:45:56:error:'ios_base'hasnotbeendeclaredtestGetprice2.cpp:45:72:error:'ios_base'hasnot

c++ - 当 const 引用绑定(bind)到临时引用时,堆栈中会发生什么?

C++标准允许将const引用绑定(bind)到右值,从而延长临时对象的生命周期,直到引用超出范围。但是,我无法弄清楚这实际上是如何编译的,让我用一个例子来解释:std::stringfoo(){returnstd::string("foo");}voidbar(){VeryBigObjectobj;//Perhapsdosomethingwiththebigobject}intmain(int,char**){conststd::string&foo_str=foo();bar();return0;}据我所知,以x86架构为例,首先调用函数foo()并在堆栈中构造字符串对象,这意味着

c++ - 了解堆栈、堆和内存管理

int*ip=newint[10];for(inti=0;i上面的代码是我试图用来了解堆栈和堆的测试函数的一小段。我不完全确定正确的顺序是什么。这是我目前所拥有的:当创建指针ip时,它指向由于"new"声明而在堆上创建的大小为10的新int数组。0-9从0-9加入到数组中。指针现在传递给myfun,这意味着myfun有一个指向堆上相同内存空间的指针。delete[]ip;删除堆上分配给ip指针的内存。传递给myFun的指针现在指向任何内容。一旦函数完成,ip变量将被删除,因为它只是函数的本地变量。是否有人能够澄清我是否正确并纠正我哪里出错了?此外,如果我在那之后尝试继续使用ip,它会不

c++ - boost::asio::io_service 在 win_mutex 锁中崩溃

我一直在使用boost::asio时遇到问题,其中使用全局io_service实例创建的计时器和/或套接字在构造期间崩溃。发生崩溃的系统如下:Windows7适用于Windows桌面的VisualStudio2013Express;v12.0.31101.00更新4Boost1.57,动态链接,使用多线程编译,例如boost_thread-vc120-mt-gd-1_57.dll我已经能够在以下简化代码中重现该问题://文件global_io_service.h#ifndefINCLUDED_GLOBAL_IO_SERVICE_H#defineINCLUDED_GLOBAL_IO_SE

c++ - 转置矩阵的内存黑客破坏堆栈,C++

我需要用C++实现一个矩阵转置过程。问题是签名,函数必须这样调用:transpose(in_mat[0][0],n,m,out_mat[0][0])其中n和m是维度。所有值都是double值,包括矩阵和维度。由于代码是自动生成的,我无法解决这个问题。我的解决方法是这样的:voidtranspose(double&in_mat,constdouble_n,constdouble_m,double&out_mat){intn=_n,m=_m;double*in_pointer=&in_mat;double*out_pointer=&out_mat;for(inti=0;i它工作正常。我用两