Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      malloc

      From cppreference.com
      <c‎ |memory
       
       
       
      Defined in header<stdlib.h>
      void*malloc(size_t size);

      Allocatessize bytes of uninitialized storage.

      If allocation succeeds, returns a pointer that is suitably aligned for any object type withfundamental alignment.

      Ifsize is zero, the behavior ofmalloc is implementation-defined. For example, a null pointer may be returned. Alternatively, a non-null pointer may be returned; but such a pointer should not bedereferenced, and should be passed tofree to avoid memory leaks.

      malloc is thread-safe: it behaves as though only accessing the memory locations visible through its argument, and not any static storage.

      A previous call tofree,free_sized, andfree_aligned_sized(since C23) orrealloc that deallocates a region of memorysynchronizes-with a call tomalloc that allocates the same or a part of the same region of memory. This synchronization occurs after any access to the memory by the deallocating function and before any access to the memory bymalloc. There is a single total order of all allocation and deallocation functions operating on each particular region of memory.

      (since C11)

      Contents

      [edit]Parameters

      size - number of bytes to allocate

      [edit]Return value

      On success, returns the pointer to the beginning of newly allocated memory. To avoid a memory leak, the returned pointer must be deallocated withfree() orrealloc().

      On failure, returns a null pointer.

      [edit]Example

      Run this code
      #include <stdio.h>#include <stdlib.h> int main(void){int*p1= malloc(4*sizeof(int));// allocates enough for an array of 4 intint*p2= malloc(sizeof(int[4]));// same, naming the type directlyint*p3= malloc(4*sizeof*p3);// same, without repeating the type name if(p1){for(int n=0; n<4;++n)// populate the array            p1[n]= n*n;for(int n=0; n<4;++n)// print it back outprintf("p1[%d] == %d\n", n, p1[n]);} free(p1);free(p2);free(p3);}

      Output:

      p1[0] == 0p1[1] == 1p1[2] == 4p1[3] == 9

      [edit]References

      • C17 standard (ISO/IEC 9899:2018):
      • 7.22.3.4 The malloc function (p: 254)
      • C11 standard (ISO/IEC 9899:2011):
      • 7.22.3.4 The malloc function (p: 349)
      • C99 standard (ISO/IEC 9899:1999):
      • 7.20.3.3 The malloc function (p: 314)
      • C89/C90 standard (ISO/IEC 9899:1990):
      • 4.10.3.3 The malloc function

      [edit]See also

      deallocates previously allocated memory
      (function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=c/memory/malloc&oldid=157841"

      [8]ページ先頭

      ©2009-2025 Movatter.jp