AddArray
한 배열의 요소를 다른 배열의 끝에 추가합니다.
bool AddArray(
const CArrayObj * src 배열
)
|
Parameters
src
[in] CArrayDouble 클래스 인스턴스에 대한 포인터 - 추가할 요소의 출처.
Return Value
Note
//--- 예제
extern bool make_error;
extern int error;
extern CArrayObj *src;
//--- 새 인스턴스 CArrayObj를 생성
//--- 기본 메모리 관리가 켜져 있습니다
CArrayObj *array=new CArrayObj;
//--- 소스 배열에서 요소 추가(복사)
if(array!=NULL)
bool result=array.AddArray(src);
if(make_error)
{
//--- 잘못된 동작
switch(error)
{
case 0:
//--- 메모리 관리 플래그를 확인하지 않고 소스 어레이 제거
delete src;
//--- 결과:
//--- 수신기 배열에서 잘못된 포인터로 요소의 주소를 지정할 수 있습니다
break;
case 1:
//--- 소스 어레이에서 메모리 관리 메커니즘 사용 안 함
if(src.FreeMode()) src.FreeMode(false);
//--- 그러나 원본 배열은 제거하지 마십시오
//--- 결과:
//--- 수신기 배열을 제거한 후 소스 배열에서 잘못된 포인터로 요소의 주소를 지정할 수 있습니다
break;
case 2:
//--- 소스 어레이에서 메모리 관리 메커니즘 사용 안 함
src.FreeMode(false);
//--- 수신기 배열에서 메모리 관리 메커니즘을 사용하지 않도록 설정합니다
array.FreeMode(false);
//--- 결과:
//--- 프로그램 종료 후 "메모리 누수" 발생
break;
}
}
else
{
//--- 소스 어레이에서 메모리 관리 메커니즘 사용 안 함
if(src.FreeMode()) src.FreeMode(false);
//--- 소스 배열 삭제
delete src;
//--- 결과:
//--- 수신기 배열 요소의 주소가 올바릅니다
//--- 수신기 배열을 삭제하면 해당 요소가 삭제됩니다
}
|
예제:
//--- CArrayObj::AddArray(const CArrayObj*) 예제
#include <Arrays\ArrayObj.mqh>
//---
void OnStart()
{
CArrayObj *array=new CArrayObj;
//---
if(array==NULL)
{
printf("객체 생성 오류");
return;
}
//--- 소스 배열 생성
CArrayObj *src=new CArrayObj;
if(src==NULL)
{
printf("객체 생성 오류");
delete array;
return;
}
//--- 자유 모드 플래그 재설정
src.FreeMode(false);
//--- 소스 어레이 채우기
//--- . . .
//--- 다른 배열 추가
if(!array.AddArray(src))
{
printf("배열 추가 실패");
delete src;
delete array;
return;
}
//--- 요소 없이 소스 배열 삭제
delete src;
//--- 배열 사용
//--- . . .
//--- 배열 삭제
delete array;
}
|