项目过大也可能引起//
把 project->配置属性->c/c++->代码生成->基本运行时检查 为 默认值 就不会报本异常。具体原因正在研究中。。。
如果改为其他就有exception。
exception有时是有道理的
// step 1
STRINGC2& STRINGC2::operator += (const char x)
{
// if (x == 0) return *this;
STRINGC2& STRINGC2::operator += (const char x)
{
// if (x == 0) return *this;
char ptr[1]; // max is 1 digit
ptr[0] = x;
ptr[1] = '\0';
*this += ptr; // off to step 2 and back
ptr[1] = '\0';
*this += ptr; // off to step 2 and back
return *this; // step 4 crash
}
这个也会导致上述exception。
}
这个也会导致上述exception。
问题描述:
Problem
The following error message occurs when building on Test RealTIme environment with the cvisual7 TDP?
The following error message occurs when building on Test RealTIme environment with the cvisual7 TDP?
Run-Time Check Failure #2 - Stack around the variable 'xxx' was corrupted.
Cause
Stack pointer corruption is caused writing outside the allocated buffer in stack memeory.
Solution
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 co de may cause the above error messge.
Cause
Stack pointer corruption is caused writing outside the allocated buffer in stack memeory.
Solution
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 co
#include <stdio.h>
#include <string.h>
#include <string.h>
#define BUFF_LEN 11 // 12 may fix the Run-Time Check Failure #2
int rtc_option_test(char * pStr);
int rtc_option_test(char * pStr);
int main()
{
char * myStr = "hello world";
rtc_option_test(myStr);
return 0;
}
{
char * myStr = "hello world";
rtc_option_test(myStr);
return 0;
}
int rtc_option_test(char * pStr)
{
char buff[BUFF_LEN];
strcpy(buff, pStr); //cause Run-Time Check Failure #2 - Stack around
//the variable 'buff' was corrupted.
return 0;
}
{
char buff[BUFF_LEN];
strcpy(buff, pStr); //cause Run-Time Check Failure #2 - Stack around
//the variable 'buff' was corrupted.
return 0;
}