[英]Difference between byte size of C-String
我正在為我的數據網絡類從事一個項目,他們要求我連接一個標題,如下所示:
struct ip
{
unsigned long a;
unsigned long b;
unsigned int l;
} IP;
還有一條消息,它是一個字符*,我們說“你好”。
因此,我使用此方法將兩個char *連接起來:
memcpy(sendBuf, (void*)&sendHeader, sizeof(sendHeader));
memcpy(&sendBuf[sizeof(sendHeader)], readMessage, lengthMessage);
lengthMessage是消息+1的字符數,它是空終止符。
因此,sendBuf的定義如下:
char sendBuf[BUFLEN + 1] // BUF_LEN = 128
然后,將這個char *放入這樣定義的隊列中:
concurrency::concurrent_queue<char*> IP_in_queue;
因此,我想檢查信息是否正確,所以我只檢查所有內容:
char* s;
IP_in_queue.try_pop(s);
numbytes = sizeof(s);
// Copy from buf to the header
memcpy( (void*)&readHeader, s, sizeof( IP_PACKET_HEADER_T));
// Copy message part
memcpy( sendedString, &s[sizeof(IP_PACKET_HEADER_T)], numbytes - sizeof(IP_PACKET_HEADER_T));
// Append \0 to the end
sendedString[numbytes - sizeof(IP_PACKET_HEADER_T)] = '\0';
因此,在我將char *排隊之前,我們知道sendBuf的大小為129,但是當我在出隊后檢查字節數時,它的差別太大了,字節數的值為4,但是即使那樣我正確獲取信息,所以我不明白,也許我錯過了一些重要的東西,但是可變字節數至少不應該更多?
我希望我能說清楚一點,也許有人可以更好地向我解釋一下。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.