我有這樣的代碼:運行時檢查失敗#2 - 堆棧圍繞變量 '' Z」被破壞
char z[9]; Int_To_BCD(vInt, z); Buflen += sprintf(BufStr + Buflen, "(%s)", z);
和:
無效INT_TO_BCD(INT VAL ,焦炭*總分){
int i = 0; int j = 0; int outIndex = 0; unsigned char digits[4]; unsigned char Digit[2]; memcpy((void*)digits, (void*)&val, 4); for (i = 0; i <= 3; i++) { Digit[0] = (digits[i] & HIGH)/16; Digit[1] = digits[i] & LOW; for (j = 0; j < 2; j++) { sprintf(&(out[outIndex]), "%d", Digit[j]); outIndex++; } } if (outIndex == 0) { sprintf(&(out[outIndex]), "%d", 0); outIndex++; } out[outIndex] = '\0'; }
在調試模式:程序運行,直到主函數結束並顯示消息:
運行時檢查失敗#2 - 堆棧周圍的變量「Z」被損壞
outIndex的maximun是總是8。 z有8個字節的內存。不是嗎?
什麼問題?
謝謝!
其他的東西可以覆蓋它。檢查所有數組並徹底循環。 – nonsensickle