0

ヘッダー ファイルといくつかのインクルード ライブラリに問題はないと仮定します。Winsock2 を使用しています。

//main.cpp and this code is okie, I omit some codes for readable reason
SOCKET ClientSocket;
ClientSocket = INVALID_SOCKET;
ClientSocket = accept(ListenSocket, NULL, NULL);
cout <<"a client is connected" << endl;
ClientConnection connection(ClientSocket);
connection.run();

//ClientConnection.h I tested any function and it's okie
class ClientConnection{
    private:
        SOCKET connectedSocket;
        bool connected;
    public:
        ClientConnection(const ClientConnection &con);
        ClientConnection(SOCKET s);
        int processMessage(string message);
        void sendMessage(string message);
        string recvMessage();
        int run();
        void printSomething(); //function just print something such as :"Here"
};

run()関数では、 を呼び出してクライアントrecvMessage()からメッセージを取得し、次に を呼び出しますprocessMessage(message)。これは私processMessage(message)sendMessage:

void ClientConnection::sendMessage(string mess){
    const char* sendBuff = mess.c_str();    
    int error = send(this->connectedSocket,sendBuff, (int)strlen(sendBuff), 0);
    delete sendBuff;
    return ;
}
int ClientConnection::processMessage(string message){
    cout << "This is message from client:\n" << message << endl;
    ImageProcessingPlugin *plugin = new ImageProcessingPlugin();
    plugin-> processMessage( *this, message);
    delete plugin;
    return 0;
}

これは ImageProcessingPlugin です:

// ImageProcessingPlugin.h
class ImageProcessingPlugin : public Plugin{
public:
    ImageProcessingPlugin();
    void processMessage(const ClientConnection &connection, string message);
};
// ImageProcessingPlugin.cpp
void ImageProcessingPlugin::processMessage(const ClientConnection& _connection,  string message){
    ClientConnection connection(_connection);
    connection.printSomething() // It's okie
    connection.sendMessage("Server received"); // Problem goes here!!
    return;
}

デバッグ後、 を呼び出しprintSomething()plugin->processMessageも問題ありませんが、 に移動するsendMessageと、クライアントはサーバーから「サーバーが受信しました」というメッセージを受け取りましたが、「_Block_Type_IS_VALID(pHead->nBlockUse)」というエラーが発生しました! 誰でも私の問題を解決できますか?

4

1 に答える 1

3

ここで削除delete sendBuff;しますが、自分でメモリを割り当てたことはありません。その行を削除してみてください。

于 2012-06-18T04:01:39.140 に答える