This function allocates memory for a safearray, based on a descriptor created with SafeArrayAllocDescriptor.
HRESULT SafeArrayAllocData(SAFEARRAY FAR* psa ); 
Parameters
- psa
 [in] Pointer to an array descriptor created by SafeArrayAllocDescriptor.
Return Values
Returns the HRESULT values shown in the following table.
| Value | Description | 
|---|---|
| S_OK | Success. | 
| E_INVALIDARG | The psa parameter was not a valid safearray descriptor. | 
| E_UNEXPECTED | The array could not be locked. | 
Remarks
Passing invalid (and under some circumstances NULL) pointers to this function causes an unexpected termination of the application.
Example
The following code example creates a safearray using the SafeArrayAllocDescriptor and SafeArrayAllocData functions.
SAFEARRAY FAR* FAR*ppsa;
unsigned int ndim = 2;
HRESULT HRESULT = SafeArrayAllocDescriptor(ndim, ppsa);
if( FAILED(hresult))
  return ERR_OutOfMemory;
(*ppsa)->rgsabound[ 0 ].lLbound = 0;
(*ppsa)->rgsabound[ 0 ].cElements = 5;
(*ppsa)->rgsabound[ 1 ].lLbound = 1;
(*ppsa)->rgsabound[ 1 ].cElements = 4;
HRESULT = SafeArrayAllocData(*ppsa);
if( FAILED(hresult)) {
  SafeArrayDestroyDescriptor(*ppsa)
  return ERR_OutOfMemory;
}
Requirements
OS Versions: Windows CE 2.0 and later.
Header: Oleauto.h.
Link Library: Oleaut32.lib.
See Also
Automation Functions | SafeArrayDestroyData | SafeArrayDestroyDescriptor
Send Feedback on this topic to the authors