Click to Rate and Give Feedback
MSDN
MSDN Library
COM
COM Fundamentals
Reference
Functions
 CoTaskMemAlloc Function
CoTaskMemAlloc Function

Allocates a block of task memory in the same way that IMalloc::Alloc does.

Syntax

C++
LPVOID CoTaskMemAlloc(
  __in  SIZE_T cb
);

Parameters

cb [in]

The size of the memory block to be allocated, in bytes.

Return Value

If the function succeeds, it returns the allocated memory block. Otherwise, it returns NULL.

Remarks

CoTaskMemAlloc uses the default allocator to allocate a memory block in the same way that IMalloc::Alloc does. It is not necessary to call the CoGetMalloc function before calling CoTaskMemAlloc.

The initial contents of the returned memory block are undefined – there is no guarantee that the block has been initialized. The allocated block may be larger than cb bytes because of the space required for alignment and for maintenance information.

If cb is 0, CoTaskMemAlloc allocates a zero-length item and returns a valid pointer to that item. If there is insufficient memory available, CoTaskMemAlloc returns NULL. Applications should always check the return value from this function, even when requesting small amounts of memory, because there is no guarantee that the memory will be allocated.

Requirements

Minimum supported clientWindows 2000 Professional
Minimum supported serverWindows 2000 Server
HeaderObjbase.h
LibraryOle32.lib
DLLOle32.dll

See Also

CoTaskMemFree
CoTaskMemRealloc
IMalloc::Alloc

Send comments about this topic to Microsoft

Build date: 10/22/2009

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
vb.net syntax      dmex   |   Edit   |   Show History
<DllImport("ole32.dll")> Public Shared Function CoTaskMemAlloc(ByVal cb As Integer) As IntPtr
End Function
Tags What's this?: Add a tag
Flag as ContentBug
C# syntax      dmex   |   Edit   |   Show History
[DllImport("ole32.dll")]
internal static extern IntPtr CoTaskMemAlloc(int cb);
Tags What's this?: Add a tag
Flag as ContentBug
Why P/Invoke?      joechung   |   Edit   |   Show History
Why bother with those P/Invoke methods when you can just call Marshal.AllocCoTaskMem?
Tags What's this?: c# (x) syntax (x) vb.net (x) Add a tag
Flag as ContentBug
Processing
© 2009 Microsoft Corporation. All rights reserved. Terms of Use | Trademarks | Privacy Statement | Site Feedback
Page view tracker