小编flu*_*mpb的帖子

如何使用GDB查找内存地址对应的函数

我正在使用谷歌的堆检查器来追踪内存泄漏.它给了我一个堆栈跟踪,例如:

Leak of 21 bytes in 1 objects allocated from:                                                                                                                                                               
    @ 0xf6088241                                                                                                                                                                                               
    @ 0xf60890d2                                                                                                                                                                                               
    @ 0xf6089246                                                                                                                                                                                               
    @ 0x8054781                                                                                                                                                                                                
    @ 0x8054862                                                                                                                                                                                                
    @ 0xf684ee76                                                                                                                                                                                               
    @ 0xf684f343                                                                                                                                                                                               
    @ 0x804be4c                                                                                                                                                                                                
    @ 0x80544f6                                                                                                                                                                                                
    @ 0xf5e52bb6                                                                                                                                                                                               
    @ 0x804b101  
Run Code Online (Sandbox Code Playgroud)

如何确定这些内存地址对应的代码功能/行?

c++ gdb

23
推荐指数
2
解决办法
5万
查看次数

Boost.Regex vs C++ 11 Regex

有人可以解释两者之间的差异吗?现在学习哪个更好?知识将如何从一个转移到另一个,反之亦然?

c++ regex boost boost-regex c++11

15
推荐指数
2
解决办法
7544
查看次数

我如何在自身内部使用lambda函数?

我有这个代码,不知道我想要实现的是什么.

_acceptor.async_accept(
    _connections.back()->socket(),
    [this](const boost::system::error_code& ec)
    {
        _connections.push_back(std::make_shared<TcpConnection>(_acceptor.get_io_service()));
        _acceptor.async_accept(_connections.back()->socket(), this_lambda_function);
    }
);
Run Code Online (Sandbox Code Playgroud)

一旦接受了套接字,我想重用处理程序(也就是lambda函数).这可能吗?有没有更好的方法来实现这一目标?

c++ lambda c++11

11
推荐指数
1
解决办法
383
查看次数

了解std :: string的效率

我正在尝试学习更多关于c ++字符串的知识.

考虑

const char* cstring = "hello";
std::string string(cstring);
Run Code Online (Sandbox Code Playgroud)

std::string string("hello");
Run Code Online (Sandbox Code Playgroud)

假设在应用程序的.data部分中存储"hello",然后将字节复制到堆上的另一个区域,由std :: string管理的指针可以访问它们,我是否正确?

我怎么能有效地存储一个非常长的字符串?我正在考虑从套接字流中读取数据的应用程序.我担心连续多次.我可以想象使用链表并遍历此列表.

弦乐已经吓倒了我太久了!

任何链接,提示,解释,进一步的细节,将非常有帮助.

c++ string performance construction

6
推荐指数
1
解决办法
2003
查看次数

gcc -D选项没有做我想的那样

我正在尝试在项目中使用AsmJit.这是我使用的makefile:

CC = g++
CFLAGS = -D ASMJIT_API -I dep/

test: src/main.cpp
        $(CC) $(CFLAGS) src/main.cpp -o test.exe
Run Code Online (Sandbox Code Playgroud)

尝试这个时我遇到了编译器错误,所以我#define ASMJIT_API从dep/AsmJit/Config.h 取消注释了这行,并从makefile中删除了-D开关,干净地编译了所有内容.我正在使用gcc 4.5.3.有任何想法吗?

谢谢.

编辑:编译器错误

g++ -DASMJIT_API -Idep/ src/main.cpp -o test.exe
In file included from dep/AsmJit/Assembler.h:31:0,
                 from src/main.cpp:1:
dep/AsmJit/Build.h:274:1: error: expected unqualified-id before numeric constant
In file included from dep/AsmJit/AssemblerX86X64.h:36:0,
                 from dep/AsmJit/Assembler.h:51,
                 from src/main.cpp:1:
dep/AsmJit/Defs.h:408:1: error: expected unqualified-id before numeric constant
In file included from dep/AsmJit/DefsX86X64.h:36:0,
                 from dep/AsmJit/Defs.h:423,
                 from dep/AsmJit/AssemblerX86X64.h:36,
                 from dep/AsmJit/Assembler.h:51,
                 from src/main.cpp:1:
dep/AsmJit/Util.h:412:8: error: expected identifier before numeric …
Run Code Online (Sandbox Code Playgroud)

gcc makefile asmjit

6
推荐指数
1
解决办法
2249
查看次数

使用ifstream复制算法

以下代码的行为与我的预期不符.请帮我理解它是如何工作的.

#include <algorithm>
#include <iterator>
#include <fstream>
#include <vector>
#include <string>
using namespace std;

struct user
{
        string name;
        string age;
        string id;
};

istream& operator>>(istream& is, user& s)
{
        getline(is, s.name, ':');
        getline(is, s.age, ':');
        getline(is, s.id);

        return is;
}

int main(int argc, char* argv[])
{
        ifstream file("file.txt");
        vector<user> vec;
        copy(istream_iterator<user>(file), istream_iterator<user>(), back_inserter(vec));

        return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的自定义运算符>>被调用两次,但我希望它只被调用一次因为内容是:

约翰:40:21-5821-0

c++ iterator istream-iterator ifstream stl-algorithm

6
推荐指数
1
解决办法
1244
查看次数

C++多线程服务器帮助

我正在使用boost-asio在c ++中使用多线程服务器.目前我遇到的一个设计问题是擦除连接.

我有一个服务器实例,它包含一个连接对象的向量.这些连接接收我解析的命令.一个命令特别处理向我的向量中的所有连接发送数据.

现在,当连接断开连接时,我正在从向量中删除此连接并调用析构函数.当某人'SendAll'同时有人'断开'时,我似乎会遇到问题.

任何人都可以推荐一个更好的设计或只是指出我正确的方向?任何帮助非常感谢.谢谢

c++ multithreading boost boost-asio

3
推荐指数
1
解决办法
885
查看次数

cmp和ja问题

我在理解这个问题时遇到了问题.它是英特尔语法

cmp eax, 0x19
ja greater
Run Code Online (Sandbox Code Playgroud)

eax包含值-40.http://en.wikibooks.org/wiki/X86_Assembly/Control_Flow告诉我ja是来自前一个cmp的无符号比较.

据我所知,这应该跳转IF arg1(0x19)是ABOVE arg2(0xffffffd8)

对我来说,0x19看起来比0xffffffd8小.跳跃正在进行中.任何帮助理解我的错误逻辑非常感谢!

assembly gdb instructions disassembly

3
推荐指数
1
解决办法
2万
查看次数

在类头和实现中包含头?

我有一个类Foo,对应的是.h和.cpp.这两个文件都使用std :: string.我应该只#include <string>在标题中还是将它包含在两个文件中?

c++

3
推荐指数
1
解决办法
129
查看次数

使用模板成员函数和非模板重载的参数推导

我不确定如何提出这个问题,因为我对模板使用的知识很浅,但这里什么都没有.

我有一个类,我想为所有数值提供一个函数模板,然后这个函数模板调用非模板版本,它需要一个std :: string,如下所示.

template< class T > void
add_to_header( const std::string &key, const T &val )
{
    add_to_header( key, std::to_string( val ) );
}

virtual void
add_to_header( const header& header );

virtual void
add_to_header( const std::string &key, const std::string &val );
Run Code Online (Sandbox Code Playgroud)

这段代码编译得很干净,但是我失去了使用const char []进行调用的能力.

instance.add_to_header( "Example1", 4 ); // successful
instance.add_to_header( "Example2", std::string( "str val" ) ); // successful
instance.add_to_header( "Example3", "Not fun" ); // error - none of the 9 overloads could convert all the argument …
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

1
推荐指数
1
解决办法
219
查看次数