亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問在C++構造函數中 如何給類中public作用域下的指針分配空間?如下情況!

請問在C++構造函數中 如何給類中public作用域下的指針分配空間?如下情況!

C++ C
呼啦一陣風 2021-11-03 20:07:49
溢出在隱式恒轉換,有兩個指針,連續分配,警告顯示給第二個分配空間的指針dev_name = new char(20); RecvDataBuffer = new char(1024); 這是什么原因啊,怎么修改?
查看完整描述

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等于多少???

查看完整回答
反對 回復 2021-11-07
?
達令說

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大多了,當然溢出了!



查看完整回答
反對 回復 2021-11-07
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

你的程序用new是分配一個字符呢還是分配一段連續的空間?這個問題你沒有明確,如果是分配一個字符的話,第二個有問題,你括號里面的是整型值,而char的范圍最大都只能取到255,而1024,明顯溢出了,所以編譯會出問題,如果是分配數組的話,應該是new 元素類型[分配的大小],不是你所用的括號

查看完整回答
反對 回復 2021-11-07
  • 3 回答
  • 0 關注
  • 372 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號