Friday, September 12, 2008

[血的教训]初始化

各位也都觉得,初始化没什么啊,我也这么觉得。昨天遇到一个问题,移植别人写CDMA的代码,用C打印出来后面是乱码,C++却安然无事。

这个是C的:
[deli@localhost cdma]$ ./test_pdu_decode 0000021002020602469956061408a30003100000018e2232716bce5a7b9c14147e8ff863837c60e484028b8b98e180118053188b10c2e07adb33a8f8016b837c60e398e398e398e1805ac9d2cab369da9542f802ce5aab37f80bdaa2dfca74a4c4c29a3a7003f53af3b315ea7003590acab7f843b3f29033b3f3384acab7f84ae07adb335eaa70d29f7b188b10c29a1a8a1b9d848e8ff80801800170018a8a18017b3b0803060809081259090801c00a0100
sms context == 中秋佳节近,灯谜邀共猜。《挑战小学生-灯谜猜猜猜》夺奖活动开始啦!答对五题升一级并抽一次奖(百分百有奖)小学毕业可挑战千元现金!0.1元/条������
�����


这个是C++的:
[deli@localhost cdma]$ ./a.out 0000021002020602469956061408a30003100000018e2232716bce5a7b9c14147e8ff863837c60e484028b8b98e180118053188b10c2e07adb33a8f8016b837c60e398e398e398e1805ac9d2cab369da9542f802ce5aab37f80bdaa2dfca74a4c4c29a3a7003f53af3b315ea7003590acab7f843b3f29033b3f3384acab7f84ae07adb335eaa70d29f7b188b10c29a1a8a1b9d848e8ff80801800170018a8a18017b3b0803060809081259090801c00a0100
sms context == 中秋佳节近,灯谜邀共猜。《挑战小学生-灯谜猜猜猜》夺奖活动开始啦!答对五题升一级并抽一次奖(百分百有奖)小学毕业可挑战千元现金!0.1元/条

调试啊调试啊,最后代码锁定在这一行:
3473 wchar_t wchar[256]; // UNICODE串缓冲区

阿门,改为
3473 wchar_t wchar[256] = {0}; // UNICODE串缓冲区
就ok了,分特!

我们的老大一而再,再而三的嘱咐,字符串数组一定要初始化啊,省点时间,早点下班,回去找媳妇啊。

No comments: