mallocメモリ割り当ておよび実際のメモリメソッドのクエリーについて

1373 ワード

今日mallocでメモリを割り当てる時、実際に割り当てたメモリの大きさを見てみたいと思って、最初にmicrosoftの方法を見つけました_msize、後でlinuxの下で関連する方法がないことを発見しました.でも結局見つけた
malloc_usable_size
この関数は、mallocを呼び出して実際に割り当てた使用可能なメモリのサイズを返すのに使用します.
下にコードを貼って、何か問題があったら、レンガを撮ってください.
#include 
#include 
#include 
#include 

int main(int argc, char * argv[])
{
        printf("int     :%d
", sizeof(int)); int *a, b = 1; int nbytes; a = (int *)malloc(sizeof(int) * 3); nbytes = malloc_usable_size(a); printf(" :%d
", nbytes); printf("a :%d
", sizeof(a)); a[0] = b; a[0] += 1; a[1] = 3; a[2] = 5; printf("b = %d
", b); printf("a = %d
", *a); printf(" :b - 0x%x
", &b); printf(" , :a - 0x%x
", a); free(a); a = NULL; printf(" , :a - 0x%x
", a); if(a != NULL) printf("a = %d
", *a); else printf("a is NULL, %d
", a); return 0; }

戻り値は次のとおりです.
int     :4
         :12
a   :4
b = 1
a = 2
    :b - 0xbff4ad64
   ,    :a - 0x9f01008
   ,    :a - 0x0
a is NULL, 0