CRT detected that the application wrote to memory after end of heap buffer 오류 해결
글쓴이: jwkim0911 / 작성시간: 화, 2023/04/25 - 7:53오후
해당 코드를 실행하게 되면 중단점 명령 실행됨이라는 오류가 발생하게 됩니다. 이것이 정확히 무엇을 의미하고 어떠한 방식으로 해결할 수 있는지 궁금합니다. 또한 CRT detected that the application wrote to memory after end of heap buffer 라는 오류 화면 또한 볼 수 있었습니다.
#pragma warning(disable:4996) #include <iostream> #include <cstring> using namespace std; class String { private: char* a; public: String(const char *C=" ") { a = new char[strlen(C) + 1]; strcpy(a, C); } String(const String& copy) { a = new char[strlen(copy.a) + 1]; strcpy(a, copy.a); } ~String() { delete []a; } friend String operator+(String a,String b); void showfun() const; }; String operator+(String X,String Y) { String res(strcat(X.a , Y.a)); return res; } void String::showfun() const { cout << a << endl; } int main() { String a("Happy"); String b(" BirthDay"); String d; (a + b).showfun(); return 0; }
Forums:
음 ..
위 코드에서 String X 의 a 는 이미 주어진 문자열("Happy") 크기 만큼의 공간만을 할당받은 상태인데, 그 뒷부분에 데이터를 더 이어붙이려고 하면.. 유효하지 않은 공간에 데이터를 쓰게 되는 셈이 되겠죠.
되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』
댓글 달기