Hello, i've encountered a strange little thing. I pass a pointer by reference to a function in a DLL. The function creates a dynamic array from the pointer by using new. That works fine, the data in the array is filled like it should. But, when I try to delete the array from the main program, delete throws a runtime error. :/ any clues?

Function from my DLL:
Code:
void DDraw::Get_Enumeration_Result(Enum_Result *&result, int &resultCount)
{
	int	idx = 0, sz = (int)deviceEnum.size();

	result = new Enum_Result[sz];
	resultCount = sz;

	for(enumIterator = deviceEnum.begin(); enumIterator != deviceEnum.end(); ++enumIterator)
	{
		Enum_Result		tmp = (Enum_Result)*enumIterator;

		result[idx].enumWidth = tmp.enumWidth;
		result[idx].enumHeight = tmp.enumHeight;
		result[idx].enumDepth = tmp.enumDepth;
		idx++;
	}
}
Code in my main program:
Code:
	Enum_Result	*res = NULL;
	int			count;

	gfx->Get_Enumeration_Result(res, count);
	for(int i = 0; i < count; i++)
	{
		char txt[100];
		sprintf(txt, "%dx%dx%d", res[i].enumWidth, res[i].enumHeight, res[i].enumDepth);
		MessageBox(hWnd, txt, "Enum", MB_OK);
	}
	delete[] res;