簡體   English   中英

uint32_t變量變化很奇怪

[英]uint32_t variable is strange changing

我有簡單的代碼:

#define NUM_UA_SOCK     100

typedef struct _UA_REQUEST
{
    string full_url;
    uint32_t        url_adler32 ;
    TCPsocket   sock_ua ;
    uint32_t    status_flag ;               // ref Enum STATUS
} UA_REQUEST ;

UA_REQUEST  GLB_ARRAY__UA_REQ[ NUM_UA_SOCK ] ;

void handle_ua_sock_ready( uint32_t ii )
{
    string _req_mstr;

    byte*request    = (byte*) _req_mstr.c_str() ;
    byte*pcrlf  = NULL ;

    UA_REQUEST*ar = GLB_ARRAY__UA_REQ ;

    // Get request from UA
    int32_t nrcv ;

    printf("index =  %lu\n", ii);
    TCPsocket sock = ar[ii].sock_ua;
    nrcv = SDLNet_TCP_Recv( sock , request , MAXLEN ) ;
    printf("After index =  %lu\n", ii);
}

handle_ua_sock_ready()函數開頭的ii變量的值為0。 調用nrcv = SDLNet_TCP_Recv(sock,request,MAXLEN)之后; 行,它變得具有很大的價值,例如1852397344。這是單線程應用。 我正在使用VS 2010,SDL,SDL_net庫。 PS:當我在Linux上編譯它時,它可以正常工作。

您正在將request傳遞到SDLNet_TCP_Recv函數,並告訴該request函數指向大小為MAXLEN的緩沖區。 由於request來自於從空std::string的緩沖區中刪除常量,因此這顯然是錯誤的。

你想要一個向量

std::vector<unsigned char> request;
request.resize(MAXLEN);

...

nrcv = SDLNet_TCP_Recv( sock , request.data() , request.size() ) ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM