누가 배열로 얼마까지 버퍼를 잡아둘수 있나? 고 여쭤보셔서
사용환경은 XE8 입니다.
#include <vcl.h>
#pragma hdrstop
#include "Main.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm3 *Form3;
AnsiString Tmp[30000000];
//---------------------------------------------------------------------------
__fastcall TForm3::TForm3(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
이렇게 하니 컴파일은 되는데
tmp크기를 40000000 으로 잡으니 Link 에러가 나오고
1억부터는 그냥 [ilink32 Error] Fatal: Out of memory 로 나오네요
이게 좀 재밌는게..
#define MAX 2100000000
AnsiString Tmp[MAX];
이렇게 하면 아무 문제 없이 컴파일이 되네요..
1억으로도 안되던게 21억을집어넣으니깐 되는데 22억은 안되네요 .
왜 이런건지 설명해주실분 계실런지요?
물론 이렇게 배열 잡아서 코딩하는것도 나쁘지만 이런 배열을 써야 한다면 동적 메모리로 잡아야 하겠죠?;
|