关于malloc内存分配及查询实际内存方法
2015-01-16 16:44
363 查看
今天在用malloc分配内存时,想查看一下实际分配后的内存大小,一开始找到了microsoft的方法_msize,后来发现linux下没有相关的方法。不过最终找到了
malloc_usable_size
这个函数的用法是返回调用malloc后实际分配的可用内存的大小
下面贴上代码,如有什么问题,请拍砖啦:
返回值为:
malloc_usable_size
这个函数的用法是返回调用malloc后实际分配的可用内存的大小
下面贴上代码,如有什么问题,请拍砖啦:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> int main(int argc, char * argv[]) { printf("int 长度为 :%d\n", sizeof(int)); int *a, b = 1; int nbytes; a = (int *)malloc(sizeof(int) * 3); nbytes = malloc_usable_size(a); printf("动态内存存的长度为:%d\n", nbytes); printf("a的长度:%d\n", sizeof(a)); a[0] = b; a[0] += 1; a[1] = 3; a[2] = 5; printf("b = %d\n", b); printf("a = %d\n", *a); printf("指针地址:b - 0x%x\n", &b); printf("释放前,指针地址:a - 0x%x\n", a); free(a); a = NULL; printf("释放后,指针地址:a - 0x%x\n", a); if(a != NULL) printf("a = %d\n", *a); else printf("a is NULL, %d \n", a); return 0; }
返回值为:
int 长度为 :4 动态内存存的长度为:12 a的长度:4 b = 1 a = 2 指针地址:b - 0xbff4ad64 释放前,指针地址:a - 0x9f01008 释放后,指针地址:a - 0x0 a is NULL, 0
相关文章推荐
- 今天遇到一个关于对象和对象方法内存分配的有趣的问题
- C语言动态内存分配:(一)malloc/free的实现及malloc实际分配/释放的内存
- 内存(RAM)结构[物理级] malloc()实际分配给用户的内存
- c++学习笔记(5)——关于三种内存分配方法
- C语言中多维数组的内存分配和释放(malloc与free)的方法
- 关于二维数组的动态内存分配的一个比较好的方法
- 关于内存分配时malloc()和calloc()的区别
- C++ malloc()、calloc()、realloc()、new[]分配内存方法辨析
- 关于动态内存分配和数组的选用(变长选malloc,定长选数组)
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- 内存分配的问题:关于malloc与free
- C++内存分配的五种方法(转)
- C++内存管理——明晰C++内存分配的五种方法的区别
- 明晰C++内存分配的五种方法的区别
- 好久没来了,都去163写记事本了。关于Delphi的内存分配管理的几句话
- 明晰C++内存分配的五种方法的区别
- 关于在Spring下 使用HQL 语句模糊查询的实现方法
- 明晰C++内存分配的五种方法的区别
- 关于内存分配
- 一段关于C内存分配的奇怪代码