3 回答

TA貢獻1780條經驗 獲得超5個贊
new char(1024); 括號中的值太大了,超過char定義的范圍,結果是無定義的(由實現定義),所以編譯器給出了一個警告,這個算是類型方面的小小錯誤。
VC系列:
char : -128 ~ 127
unsigned char : 0 ~ 255
signed char: -128 ~ 127
把括號中的值該到范圍內(-128 ~ 127)就可以了。
看看下面這個:
unsigned char p = 257; // p 等于多少????
signed char p = 128; // p等于多少???

TA貢獻1821條經驗 獲得超6個贊
應該改成這樣:
dev_name = new char[20];
RecvDataBuffer = new char[1024];
括號用錯了,
dev_name = new char(20);
分配一個字節 ,沒有問題,分配同時初始化 *dev_name= 20,在 0~255 或 -128~127 之間。
RecvDataBuffer = new char(1024);
分配一個字節 ,分配同時初始化 *RecvDataBuffer = 1024,問題來了,不在在 0~255 或 -128~127 之間
overflow in implicit constant conversion
溢出在隱式常量轉換
看1024 比127 或255大多了,當然溢出了!

TA貢獻1848條經驗 獲得超10個贊
你的程序用new是分配一個字符呢還是分配一段連續的空間?這個問題你沒有明確,如果是分配一個字符的話,第二個有問題,你括號里面的是整型值,而char的范圍最大都只能取到255,而1024,明顯溢出了,所以編譯會出問題,如果是分配數組的話,應該是new 元素類型[分配的大小],不是你所用的括號
- 3 回答
- 0 關注
- 372 瀏覽
添加回答
舉報