coder.nullcopy
생성 코드에서 초기화되지 않은 변수 선언하기
설명
coder.nullcopy
를 사용하면 변수 값을 복사하지 않고 초기화되지 않은 변수를 선언하여 생성 코드를 최적화할 수 있습니다. 다음의 특정한 두 가지 상황에서만 coder.nullcopy
를 사용하십시오.
코드 생성 시 다음 오류 중 하나가 표시됩니다.
코드를 생성하려면 모든 변수를 사용 전에 완전히 정의해야 합니다.(For code generation, all variables must be fully defined before use.)
코드를 생성하려면 모든 셀형 배열 요소를 사용 전에 완전히 정의해야 합니다.(For code generation, all cell array elements must be fully defined before use.)
하지만 모든 변수와 셀형 배열 요소가 모든 실행 경로에서 완전히 정의되었으며, 다른 문제 해결 방법들은 검토 후 기각되었습니다. 문제 해결: 변수를 사용하기 전에 완전히 정의해야 합니다 (MATLAB Coder) 항목과 Resolve Issue: Cell Array Elements Must Be Fully Defined Before Use 항목을 참조하십시오.
생성 코드에서 중복된 변수 할당이 있습니다. 즉, 변수에 값이 할당된 후 이 변수가 사용되기 전에 다른 값이 할당되었습니다.
주의하여 coder.nullcopy
를 사용하십시오. 대부분의 경우 MATLAB® 코드에 coder.nullcopy
함수를 포함하지 않은 경우에도 코드 생성기는 coder.nullcopy
에 해당하는 최적화를 자동으로 수행합니다. coder.nullcopy
를 사용하여 변수를 선언하고 해당 변수를 사용하기 전에 완전히 할당하지 않으면 생성 코드의 동작이 예측 불가능해질 수 있습니다.
는 X
= coder.nullcopy(A
)A
의 유형, 크기, 실수/복소수 여부만 X
에 복사하고 요소 값은 복사하지 않습니다. 생성 코드에서 coder.nullcopy
는 초기화되지 않은 변수를 선언하여 메모리 초기화 오버헤드를 발생시키지 않으면서 X
에 대한 메모리를 사전할당합니다. MATLAB 실행에서 coder.nullcopy
는 입력값을 반환합니다.
대부분의 경우 coder.nullcopy
는 재귀적으로 적용됩니다. 즉, A
가 집합체 유형(클래스, 구조체 또는 셀형 배열)인 경우 coder.nullcopy
는 A
의 필드, 속성 또는 요소에 대한 메모리도 사전할당합니다. 그러나 A
가 하나 이상의 가변 크기 배열을 포함하는 집합체 유형인 경우에는 특별한 고려 사항이 적용됩니다. 클래스, 구조체 또는 셀형 배열 내에서 가변 크기 배열 선언하기 항목을 참조하십시오.
X
를 사용하거나 반환하기 전에 모든 요소에 값을 할당해야 합니다. 그러지 않으면 생성 코드의 동작이 예측 불가능해질 수 있습니다.
예제
입력 인수
제한 사항
희소 행렬에는
coder.nullcopy
를 사용할 수 없습니다.오버로드된 괄호를 지원하는 클래스 또는
table
처럼 인덱싱을 사용해서 데이터에 액세스해야 하는 클래스에는coder.nullcopy
를 사용할 수 없습니다.
확장 기능
버전 내역
R2011a에 개발됨