Visual Studio 프로그램이 충돌합니다. 오류 디버그 어설 션이 실패했습니다. 내 코드에서 무엇이 잘못 되었습니까? 구문 오류가 없습니다. 오직 경고 : 배열 표현식의 삭제, 포인터로의 변환 cmd standart 컴파일러로 실행할 때 잘 동작합니다.Visual Studio 오류 디버그 어설 션이 실패했습니다
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
#define max_size 100
class my_array{
int* arr[max_size];
public:
my_array() {}
my_array(int size) {
if (size <= 0 || size > max_size) {
exit(1);
}
for (int i = 0; i < size; i++) {
arr[i] = new int;
cout << "Enter element [" << i + 1 << "] = ";
cin >> *arr[i];
}
}
~my_array() {
delete[] arr;
}
void operator[](int n) {
cout << endl;
for (int i = 0; i < n; i++) {
cout << "Enter element [" << i << "] = " << *arr[i] << endl;
}
}
};
int main() {
my_array array(6);
array[5];
return 0;
}
'~ my_array()'에서'delete [] arr; '로 인해 정의되지 않은 동작입니다. 'arr'은'new'로 할당되지 않았기 때문에'delete'로 삭제해서는 안됩니다. –
그리고 이것은 매우 물고기 같아요 :'arr [i] = new int;'. 무엇을 성취하려고합니까? 'int'에 대한 포인터의 배열을 가지고 있으며, 각각은 하나의'int'를 가리키고 있습니다. 속도, 메모리 사용 및 단순성과 관련해서도 효율적이지 않습니다. –
그래서 생성자에서 배열을 할당하는 방법? –