SET PROCEDURE TO CLSHEAP.PRG oHeap = CREATEOBJ('Heap') nNameBuffer = oHeap.Alloc(SizeOfName) oHeap.CopyTo(nNameBuffer,cMyNameString+CHR(0)) nEnvBuffer = oHeap.Alloc(SizeOfEnvironment) oHeap.CopyTo(nEnvBuffer,cMyEnvString + CHR(0)) nDriverPath = oHeap.Alloc(SizeOfDriverPath) oHeap.CopyTo(nDriverPath,cPath + CHR(0)) nFileBuff = oHeap.Alloc(SizeOfFilename) oHeap.CopyTo(nFileBuff,cFilename + CHR(0)) nConfig = oHeap.Alloc(SizeOfConfigFilename) oHeap.CopyTo(nConfig,cConfigFilename + CHR(0)) cDriverInfo2 = NumTODWORD(nVersion) + ; NumToDWORD(nNameBuffer) + ; NumToDWORD(nEnvBuffer) + ; NumToDWORD(nDriverPath) + ; NumTODWORD(nFileBuff) + ; NumToDWORD(nConfig)When you've finished, invoke oHeap.Dealloc against whatever you've finished with; releasing oHeap (ie oheap = NULL) will release all remain allocs and release the heap owned by the object.