關於指標的使用出現怪問題 |
答題得分者是:pwipwi
|
hdilwy
初階會員 發表:18 回覆:65 積分:41 註冊:2004-08-31 發送簡訊給我 |
各位大大:
小弟我寫了一個小程式由於程式碼太多所以我放在網路上
http://student.thu.edu.tw/~s892924/test.rar 我的問題是我compiler會過~~可是在執行程式的時候卻在
char *c0=new char[28];這邊出現了錯誤~~ 不知道該怎麼debug; 我的程式是做輸入16位16進制的字串轉成2進制後做對照表裡的bit交換 然後輸出~~ 請問我這樣令什麼問題嗎??我先停在一個點用F8跑卻在 char *c0=new char[28];出現錯誤~ ===不知所措的新手敬上=== |
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
hdilwy
初階會員 發表:18 回覆:65 積分:41 註冊:2004-08-31 發送簡訊給我 |
引言: hdilwy你好: 你的程式碼其中一行,配置的記憶體不足。結果造成寫入的資料超過,破壞了記憶配置表。因此接下來的new才會出了問題。 char *cp = new char[keyinput.Length() 1]; // 原來的沒有 1to pwipwi: 非常感謝你看了我的程式,但是我還有一個問題,就是我輸出的時候都會輸出超過我原本長度,這是為什麼呢,而多出來的部分都是亂碼,我只要輸出01陣列就好了,而且我執行完按X後就會出現一個錯誤訊息,可以請教一下這是什麼意思,我要如何解決.在指標的使用我是第一次用.所以可能還要麻煩你多加指導了,謝謝 另外我的那個輸入是要輸入16進制的數字,我附上一個直接貼上就好: ABCDEEFF12345678 |
justdo
高階會員 發表:2 回覆:359 積分:222 註冊:2004-08-17 發送簡訊給我 |
我測試時沒有你說的問題,倒是有其他的問題: 你使用strcpy的時候要注意一件事
他會在字串的最後面補上一個'/0'
所以
char *cp = new char[keyinput.Length() 1]; strcpy( cp, keyinput.c_str() );cp需要多留一個位置來填'/0',不然你想填入16個字元,但他實際上卻填了17個,超出你配置的記憶體空間,會發生不可預期的意外 後面也是 char *cl=new char[56 1]; char *c0=new char[28 1]; char *d0=new char[28 1]; char *subkey=new char[48 1];改成這樣,跑出來的結果正常多了... |
hdilwy
初階會員 發表:18 回覆:65 積分:41 註冊:2004-08-31 發送簡訊給我 |
|
pwipwi
版主 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
hdilwy
初階會員 發表:18 回覆:65 積分:41 註冊:2004-08-31 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |