关于malloc内存分配及查询实际内存方法
mall
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
项目地址:https://gitcode.com/gh_mirrors/ma/mall
·
今天在用malloc分配内存时,想查看一下实际分配后的内存大小,一开始找到了microsoft的方法_msize,后来发现linux下没有相关的方法。不过最终找到了
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
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
最近提交(Master分支:4 个月前 )
c15dcfce - 18 小时前
521d31d0 - 1 天前
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)