단일 프로젝트에는 양식, 컨트롤, 모듈, 변수, 상수, 프로시저, 함수 및 개체를 포함하되 이에 국한되지 않는 식별자(예약어 아님)가 최대 32,000개까지 포함될 수 있습니다. 실제 식별자 수는 사용 가능한 메모리에 따라 제한됩니다.
Visual Basic의 변수 이름은 255자를 초과할 수 없으며, 폼, 컨트롤, 모듈 및 클래스 이름은 40자를 초과할 수 없습니다. Visual Basic은 프로젝트에 있는 다양한 개체의 실제 수를 제한하지 않습니다.
◆제어 제한사항◆
각 비그래픽 컨트롤(모양, 선, 이미지 및 레이블을 제외한 모든 컨트롤)은 창을 사용합니다. 각 창은 시스템 리소스를 사용하므로 동시에 존재할 수 있는 총 창 수는 사용 가능한 리소스에 따라 제한됩니다. 정확한 제한은 사용 가능한 시스템 리소스와 사용되는 제어 유형에 따라 다릅니다. 시스템 리소스 소비를 줄이기 위해 그래픽을 만들거나 표시할 때 그림 상자 컨트롤 대신 모양, 선, 레이블 및 이미지 컨트롤을 사용할 수 있습니다.
1. 총 컨트롤 수
단일 양식에 허용되는 최대 컨트롤 수는 사용되는 컨트롤 유형과 사용 가능한 시스템 리소스에 따라 다릅니다. 그러나 양식당 허용되는 컨트롤 이름은 254개라는 고정된 제한이 있습니다. 배열의 모든 컨트롤은 컨트롤 이름을 공유하므로 컨트롤 배열은 이 제한을 한 번만 계산합니다. 모든 버전에서 제어 배열 인덱스의 제한은 0~32,767 범위입니다. 프레임의 중첩 프레임 컨트롤과 같이 각 컨트롤 위에 컨트롤을 배치하는 경우 Visual Basic에서는 일반적으로 25개 수준 이하의 중첩 컨트롤만 허용합니다.
2. 특별 통제에 대한 제한
다음 표에는 Visual Basic의 특수 컨트롤에 대한 속성 제한 사항이 나열되어 있습니다.
List 및 ListCount 목록 상자 컨트롤과 콤보 상자 컨트롤: 최대 항목 수는 32K이고 각 항목의 크기 제한은 1K(1024바이트)입니다.
텍스트 텍스트 상자 컨트롤: 64K로 제한됩니다.
캡션 라벨 제어: 1024바이트로 제한됩니다.
명령 단추 컨트롤, 확인란 컨트롤, 프레임 컨트롤 및 옵션 단추 컨트롤: 255자로 제한되며 이러한 제한을 초과하는 제목은 잘립니다.
사용자 정의 컨트롤 속성 제목: 32K로 제한
메뉴 컨트롤: 235자로 제한
모든 컨트롤에 태그 지정: 사용 가능한 메모리 크기로 제한됨
모든 컨트롤 이름 지정: 40자로 제한됩니다.
Visual Basic에서는 컨트롤 속성 이름이 30자로 제한됩니다.
◆코드 제한◆
양식, 클래스 또는 표준 모듈에 로드할 수 있는 총 코드 줄 수는 65,534줄로 제한됩니다. 코드 한 줄은 1023바이트로 제한됩니다. 한 줄의 실제 텍스트 앞에는 256개 이하의 선행 공백이 있을 수 있으며, 논리적 줄에는 25개 이하의 줄 연속 문자(_)가 있을 수 있습니다.
1. 프로시저, 유형 및 변수
모듈당 프로시저 수에는 제한이 없습니다. 각 프로세스에는 최대 64K의 코드가 포함될 수 있습니다. 프로시저나 모듈이 이 제한을 초과하면 Visual Basic에서 컴파일 타임 오류가 발생합니다. 이런 종류의 오류가 발생하는 경우 특히 큰 프로시저를 여러 개의 작은 프로시저로 분할하거나 모듈 수준 선언을 다른 모듈로 이동하여 이러한 종류의 오류를 방지할 수 있습니다. Visual Basic은 테이블을 사용하여 코드에 식별자 이름(변수, 프로시저, 상수 등)을 저장합니다. 각 테이블은 64K로 제한됩니다.
2. 동적 링크 라이브러리 선언 테이블
각 양식 및 코드 모듈은 동적 링크 라이브러리 진입점의 구조를 설명하는 테이블을 사용합니다. 각 구조는 약 40바이트이고 테이블 크기는 64K로 제한되어 모듈당 약 1500개의 선언이 생성됩니다.
3. 프로젝트 목록
전체 애플리케이션은 모든 이름이 포함된 테이블을 사용합니다. 이러한 이름에는 다음이 포함됩니다.
·상수 이름
·변수 이름
·사용자 정의 유형 정의 이름
·모듈 이름
·DLL 프로시저 선언 이름
프로젝트 이름 테이블의 전체 크기에는 제한이 없지만 대소문자를 구분하는 항목은 32K를 초과할 수 없습니다. 32K 제한이 초과되면 PRivate 식별자를 다른 모듈에서 재사용하여 대소문자 구분 항목 수를 32K로 제한할 수 있습니다.
4. 입력 테이블
다른 모듈에서 식별자가 참조될 때마다 입력 테이블에 항목이 생성됩니다. 이러한 각 항목은 최소 24바이트이지만 64K로 제한되므로 각 모듈은 약 2000개의 참조를 가질 수 있습니다.
5. 모듈 입력표
이 표의 각 모듈은 최대 125바이트이지만 총 64K로 제한되어 있으므로 각 프로젝트에서 약 400개의 모듈을 생산할 수 있습니다.
◆데이터 제한◆
Visual Basic 언어의 변수에는 다음 제한 사항이 적용됩니다.
1. 양식, 표준 및 클래스 모듈 데이터
Visual Basic의 모든 폼이나 모듈의 VBA 모듈 데이터 섹션(즉, 선언 섹션에 정의된 데이터)에는 다음 데이터를 포함하는 최대 64K의 데이터 섹션이 있습니다.
·Static으로 선언된 지역변수
·배열이 아닌 모듈 수준 변수 및 가변 길이 문자열
·각 모듈 배열과 가변 길이 문자열은 4바이트를 차지합니다.
2. 프로시저, 유형 및 변수
프로시저나 모듈이 64K 코드 제한을 초과하면 Visual Basic에서 컴파일 타임 오류가 발생합니다.
프로시저에 정의된 지역 변수가 64K를 초과하면 "지역 비정적 변수가 너무 많습니다." 오류가 생성됩니다.
모듈에 정의된 모듈 수준 변수가 64K를 초과하거나 정의된 사용자 정의 유형이 64K보다 큰 경우 "고정 또는 정적 데이터는 64K를 초과할 수 없습니다"라는 오류가 발생합니다.
이런 종류의 오류가 발생하면 너무 큰 프로시저를 여러 개의 작은 프로시저로 분할하거나 모듈 수준 선언을 다른 모듈로 이동하여 이 오류를 방지할 수 있습니다.
변수로 선언된 배열은 전체 배열 공간을 사용할 수 없습니다. 배열 설명자만 64K 제한에 영향을 미칩니다. 예를 들어 프로시저에서 선언되거나 모듈 수준 선언으로 Dimx(1000000)AsByte가 선언됩니다. 그러나 큰 고정 크기 레코드 배열을 선언한 다음 해당 레코드의 인스턴스를 변수로 선언하면 메모리 오버플로가 발생할 수 있습니다.
3. 맞춤형 유형
많은 사용자 정의 유형 가변 길이 문자열의 합은 64K를 초과할 수 있지만(각 사용자 정의 유형 가변 길이 문자열은 4바이트만 차지하며 문자열의 실제 내용은 별도로 저장됨) 사용자 정의 유형 변수는 64K를 초과할 수 없습니다. 사용자 정의 유형은 다른 사용자 정의 유형으로 정의할 수 있지만 이 유형의 총 크기는 64K를 초과할 수 없습니다.
4. 스택 공간
런타임 중 매개변수와 지역 변수는 스택 공간을 차지합니다. 모듈 수준 변수와 정적 변수는 폼이나 모듈의 데이터 섹션에 할당되므로 스택 공간을 차지하지 않습니다. 호출되는 모든 DLL 프로시저는 실행 시 스택을 사용합니다.
예를 들어 Visual Basic 자체에서는 스택을 사용하여 표현식을 평가하는 동안 중간 값을 저장합니다.
Visual Basic에서 사용할 수 있는 총 스택 크기는 스레드당 1MB입니다. 그러나 인접한 여유 메모리가 있는 경우 스택 크기가 이 제한을 초과할 수 있습니다.
◆시스템 리소스 제한◆
Visual Basic 및 이를 사용하여 구축된 응용 프로그램의 특정 제한 사항은 Microsoft Windows의 영향을 받습니다. 이러한 제한 사항은 Microsoft Windows 버전에 따라 다릅니다.
열려 있는 각 창은 시스템 리소스(Microsoft Windows에서 사용하는 데이터 영역)를 사용합니다. 시스템 리소스 범위를 넘어서 실행하면 "Windows를 실행하는 데 사용할 수 있는 리소스가 부족합니다"라는 런타임 오류가 발생합니다. Windows NT3.51에서는 "프로그램 관리자" 또는 "파일 관리자"의 "도움말" 메뉴에서 "정보"를 선택할 수 있고, Windows 95 및 Windows NT4.0에서는 "Windows 탐색기 도움말" 메뉴에서 "정보"를 선택할 수 있습니다. 남은 시스템 리소스의 비율을 감지합니다. 또한 응용 프로그램은 Windows API GetFreeSystemResources를 호출하여 시스템 리소스를 회수하고 창(예: 열린 양식 및 "코드" 창, 다른 응용 프로그램의 창)을 닫고 실행 중인 응용 프로그램을 종료할 수 있습니다.
->