c++

    [C++] 포인터, 주소연산자(&), 배열, 동적할당, 자료형 + vs 참조형 변수(&)

    &도 /처럼 연산자! 타입(자료형) 에 따라서 연산 결과가 다르다 즉, 일반 배열과 동적할당한 배열의 자료형이 다르므로, 같은 배열이어도 &연산 결과는 다름! int myarr[10]; // type : int [] int *newarr = new int[10]; // type : int * arr vs &arr 가리키고 있는 것(개념) 은 다른데, 출력 값은 같다 if 동적할당 X 배열 => arr == &arr arr : 배열의 첫번째 요소(arr[0])를 가리키고 있는 포인터 &arr : 전체 배열 자체의 포인터 따라서 arr+1 과 &arr+1 의 값은 다르다! 배열과 배열 주소의 관계 https://hashcode.co.kr/questions/936/%EB%B0%B0%EC%97%B4-%EC%9D..

    [C++] string 클래스와 문자열 입출력 (cin, getlline(), c_str(), atoi())

    C++의 클래스 다양한 문자열 메소드를 제공하는 STL c_strI(), length(), copy(), compare(), begin(), end(), operator + 등 지원 C언어의 char * 문자열과 달리, 문자열 끝에 '\0' 과 같은 null이 들어가 있지 않음 string 객체 생성 방법 // 방법 1 string str1("Hello"); // 방법 2 string str1; str1 = "Hello"; // 방법 3 string str2(str1); string 문자열 입력 받기 (cin vs getline) cin : 공백 문자 만나면 입력 받기 종료 ("Hello World"에서 "Hello" 까지만 입력받음) getline() : 공백 포함 한 줄 모두 입력받음. (에 정의된 ..

    Debug Assertion Faild! ~~~ debug_heap.cpp

    배열 동적 할당 및 해제를 잘못 해줬을 때 생기는 오류! (이미 이전에 해제를 한 메모리인데 또다시 해제를 한다거나...) 특히 기존 포인터를 Mat 객체의 데이터로 *주소 변경 후에는 이제 Mat을 가리키므로, 이전의 포인터가 가리키던 메모리를 또 해제해주지 않아야 함! 해제를 중복으로 해준 곳이 있는지 확인해보자!

    LNK2001 "public: virtual struct QMetaObject const * __thiscall ~ qt_metacall~" 외부 기호를 확인할 수 없습니다.

    Unresolved external symbol "public: virtual struct QMetaObject const * __thiscall ParentI inherited a class from QObject : class Parent: public QObject { Q_OBJECT QObject* cl; public: Parent(QObject *parent=0):QObject(parent) { cl = NULL; } QObject* get...stackoverflow.com  즉, 오류가 생긴 파일 (ex. data.obj)에 해당하는 moc_*.cpp 파일이 없어거나 열 수 없는 상태가 돼서 발생한 QT 관련 오류! 해결 방법 : 해당 헤더파일 (ex.data.h)에서 #include 를 지..

    예외 발생(0x~, .exe)): 0xC00000005: 0x00000000 위치를 기록하는 동안 액세스 위반이 발생했습니다.

    배열 동적 할당 시 발생하는 에러! 배열 메모리를 열기만 하고, 값을 NULL(nullptr)로 초기화를 시켜주지 않고서 값을 뒤에서 넣어줘서 생기는 문제... 즉, 2차원 배열을 동적 할당으로 열었을 경우엔 다음과 같이 초기화 및 할당!! 시켜주자! // 메모리 할당 short** ppsImage = new short*[nHeight]; for (int row = 0; row < nHeight; row++){ ppsImage[row] = new short[nWidth]; // 각 행의 열 값들도 동적 할당 (메모리 열기) memset(ppsImage[row], 0, sizeof(short)*nWidth); // 메모리 공간을 0으로 채우기 } // 메모리 해제 sol1 for (int row = 0; ..