У меня ошибка сегментации, и я не могу понять, почему.У меня есть глобальный объект TcpClient, который имеет указатель на объект агента.Я пытаюсь получить доступ к указателю агента в функции, когда происходит ошибка сегментации.В основном, у меня есть операторы cout до и после того, как я установил член агента в TcpClient, и оба оператора дают мне один и тот же адрес.
TcpClient client((char*)PORT);
Agent* agent = new Agent;
int main(int argc, char* args[]) {
//initialization code for agent's members
cout<<"\nagent: "<<agent;
client.setAgent(agent); //set it here
cout<<"\nclient agent: "<<client.getAgent()<<"\n";
}
Затем у меня есть эта функция в TcpClient, которая вызывается во время выполнения (после установки агента конечно).Я получаю ошибку сегментации, когда пытаюсь получить доступ к агенту.У меня есть заявление cout в начале, которое говорит мне, что агент 0x0.
void TcpClient::getCommand(char* command) {
std::cout<<"\nagent: "<<agent;
}
Тип setAgent является типичным установщиком -
void TcpClient::setAgent(Agent*& a) {agent = a;}
class Agent;
class TcpClient {
//functions and stuff
private:
Agent* agent;
};
Элемент агента не доступен нигде в коде.Единственное, что я могу придумать - это то, что объект TcpClient является глобальным, что может сделать это, но я не знаю, что.Я прав насчет этого?Любая помощь приветствуется.
Когда я запускаю код, отладчик говорит -
Program received signal SIGSEGV, Segmentation fault.
__memcpy_ssse3_rep () at ../sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S:1454
1454 ../sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S: No such file or directory.
in ../sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S
(gdb) back
#0 __memcpy_ssse3_rep ()
at ../sysdeps/i386/i686/multiarch/memcpy-ssse3-rep.S:1454
#1 0x08049c52 in Agent::setGoal (this=0x0, g=...) at agent.cpp:33
#2 0x0805075e in TcpClient::getCommand (this=0x805aac8,
command=0xbffff18d "1 3 1\n") at tcpclient.cpp:80
#3 0x08050b8d in TcpClient::communicate (this=0x805aac8) at tcpclient.cpp:153
#4 0x0804e0f8 in main (argc=1, args=0xbffff3f4) at mainclient.cpp:119