vs中 Stack around the variable 'XXX' was corrupted.

 

https://blog.csdn.net/hou09tian/article/details/75042206c++

  1. 把 project->配置屬性->c/c++->代碼生成->基本運行時檢查 爲 默認值 就不會報本異常。具體緣由正在研究中。。。    
  2. 若是改成其餘就有exception。    
  3. exception有時是有道理的    
  4. // step 1   
  5. STRINGC2& STRINGC2::operator += (const char x)   
  6. {   
  7. // if (x == 0) return *this;    
  8. char ptr[1]; // max is 1 digit    
  9. ptr[0] = x;   
  10. ptr[1] = '/0';   
  11. *this += ptr; // off to step 2 and back    
  12. return *this; // step 4 crash   
  13. }   
  14. 這個也會致使上述exception。    
  15.   
  16. 問題描述:    
  17. Problem   
  18.     
  19. The following error message occurs when building on Test RealTIme environment with the cvisual7 TDP?    
  20. Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted.     
  21.     
  22. Cause     
  23. Stack pointer corruption is caused writing outside the allocated buffer in stack memeory.    
  24.     
  25. Solution    
  26. This kind of error is detected by setting /RTC1 compiler option from menu Project -> Settings -> Configuration properties -> Build -> Compiler -> Compiler flags when using TDP cvisual7 in IBM® Rational® Test RealTime environment.. This enables stack frame run-time error checking. For example, the following code may cause the above error messge.    
  27. #include <stdio.h>   
  28. #include <string.h>    
  29. #define BUFF_LEN 11 // 12 may fix the Run-Time Check Failure #2   
  30. int rtc_option_test(char * pStr);    
  31. int main()   
  32. {   
  33. char * myStr = "hello world";   
  34. rtc_option_test(myStr);   
  35. return 0;   
  36. }    
  37. int rtc_option_test(char * pStr)   
  38. {   
  39. char buff[BUFF_LEN];   
  40. strcpy(buff, pStr); //cause Run-Time Check Failure #2 - Stack around   
  41. //the variable 'buff' was corrupted.   
  42. return 0;   
  43. }   
相關文章
相關標籤/搜索