#include <iostream>
using namespace std;
int main()
{
int length = 5;
cin >> length;
int* array = new int[length]();
array[0] = 1;
array[1] = 2;
for (int i = 0; i < length; ++i)
{
cout << (uintptr_t) & array[i] << endl;
cout << array[i] << endl;
}
delete[] array;
}
위 처럼 치면 버퍼 오버런이 발생했다고 하는데, 정상 작동은 되네요.
여기서 궁금한 점은
첫째로, 버퍼 오버런이 발생해도 정상 작동 되는데, 위처럼 해도 되는지, 안 된다면 어떤 문제가 발생하는 지 알고 싶습니다.
둘째로, cin >>으로 변수를 넣어(동적할당의 방식으로) 그만큼의 메모리 크기를 할당하는 다른 방법이 없는 지 궁금합니다.
늦게라도 글 주시면 다음날이라도 확인할께요
length개의 정수만큼 저장할 수 있게 공간을 잡았는데 변수 초기화를 2개밖에안해서그런거아니냐 나머지 초기화하고 해보셈 2 3 4인덱스 - dc App
아니면 포문을 length까지 돌리는게아니라 array[1]까지만 되게 하던가 - dc App
해결했네요 근데 또 다른 문제가 왜 고쳐졌는 지 모르겠네요
sizeof가 컴파일 인식 때문에 그렇다는 것도 해결했는데 또 10000에 가까운 수를 두니 오류 발생했네요 이런거 보면 컴퓨터가 만능은 아닌가 봅니다.
산술 오버플로우가 발생하길래 값을 크게 설정해도 그렇게 뜨네요. C++이라고 해도 무제한이 아니라는 건 알겠네요
던가->든가
하나요->한가요
하는 지->하는지
위 처럼->위처럼
없는 지->없는지
프로그래밍 언어 이전에 한국어부터...