Имя массива в Pascal - это фактически указатель на данные массива (примерно так же, как "длинные" строки AnsiString). Просто компилятор предоставляет нам удобный синтаксис для работы с такими указателями - выделяет и освобождает память самостоятельно. 
 
Если я правильно понял вопрос, вы возвращаете массив из функции, которая расположена DLL? Если так, то и данные массива тоже расположены в сегменте данных DLL, а вы на самом деле возвращаете указатель на них. Пока DLL загружена - все нормально, но когда вы ее выгружаете, сегмент данных DLL освобождается, отсюда вероятнее всего и ошибка. 
 
Чтобы избежать ошибки нужно не присваивать возвращаемое значение, а копировать массив, возвращаемый функцией в массив, который объявлен у вас в программе: Move(Source, Dest, Count); 
		
	
		
		
		
		
		
	
		
		
	
	
	 |