当前位置: 首页 > news >正文

C语言sizeof()计算空间大小为8的问题

在练习数据结构过程中,定义指针p,并且申请了10个char类型空间,但在计算p所指空间大小时候,发现了一些奇怪的现象。

#include <stdio.h>
#include <stdlib.h>int main(){char s[12];printf("the size of memory occupied = %d\n",sizeof(s));//12char *s1 = "hello,world.";printf("the size of memory occupied = %d\n",sizeof(s1));//8char *s2 = (char *)malloc(sizeof(char) * 12);printf("the size of memory occupied = %d\n",sizeof(s2));//8int a[3] = {1,2,3};printf("the size of memory occupied = %d\n",sizeof(a));//12int *a1 = (int *)malloc(sizeof(int)*3);printf("the size of memory occupied = %d\n",sizeof(a1));//8return 0;
}

 

可以发现,sizeof()只有在计算定义为数组的大小是准确的,在计算指针指向的数组或者申请空间的大小时候,不准确。

通过查阅资料得知,sizeof()不可以用来计算申请出来空间的大小。

那么,为什么是8?是因为8是指针所占空间的大小。

那我想要计算申请的空间的大小,怎么办?

=========>  _msize()  <=============

_msize()函数可以计算出申请空间的大小,如下:

#include <stdio.h>
#include <stdlib.h>int main(){char *s2 = (char *)malloc(sizeof(char) * 12);printf("sizeof(s2) = %d\n",sizeof(s2));//8printf("_msize(s2) = %d\n",_msize(s2));//12int *a1 = (int *)malloc(sizeof(int)*3);printf("sizeof(a1) = %d\n",sizeof(a1));//8printf("_msize(a1) = %d\n",_msize(a1));//12return 0;
}

!!!!!!!!!!!!如下两位博主讲的更为详细!!!!!!!!!!!!!!!!!!

参考资料:

C语言——判断矩阵维数(sizeof、_msize)

C++学习笔记之如何获取指针开辟空间或数组空间的大小以及_countof、sizeof、strlen、_Msize的区别

http://www.lryc.cn/news/161674.html

相关文章:

  • 时序分解 | MATLAB实现基于LMD局部均值分解的信号分解分量可视化
  • 景区AR虚拟三维场景沉浸式体验成为新兴的营销手段
  • 【深度学习】 Python 和 NumPy 系列教程(五):Python容器:3、集合Set详解(初始化、访问元素、常用操作、常用函数)
  • 单片机C语言实例:6、定时器的应用
  • ChatGPT Prompting开发实战(五)
  • MySQL——DQL union合并、limit限制与DDL建表和删表
  • Java“牵手”唯品会商品列表数据,关键词搜索唯品会商品数据接口,唯品会API申请指南
  • Springboot整合JWT完成验证登录
  • centos7 下使用docker安装常见的软件:Redis
  • sql:SQL优化知识点记录(十五)
  • vue3+ts 分享海报
  • Ubuntu23.10将推出全磁盘加密功能,提高系统安全性
  • 防火墙的设置主要是为了防范什么
  • Vim9和其他软件的文本复制、粘贴
  • MySQL学习5:事务、存储引擎
  • redis如何保证接口的幂等性
  • 避坑之路 —— 前后端 json 的注意问题
  • [构建 Vue 组件库] 小尾巴 UI 组件库 —— 横向商品卡片(仿淘宝)
  • 【Python】Python实现五子棋游戏(带可视化界面)【独一无二】
  • 用Maloja创建音乐收听统计数据
  • GRU门控循环单元
  • 使用Puppeteer构建博客内容的自动标签生成器
  • 大数据分析案例-基于随机森林算法构建二手房价格预测模型
  • SLAM从入门到精通(ROS安装)
  • Linux 下spi设备驱动
  • 一:图形的位置和尺寸测量
  • rtthread下基于spi device架构MCP25625驱动
  • Open3D 点云投影到圆柱(python详细过程版)
  • Unity实战(10):如何将某个相机的画面做成贴图(RenderTexture)
  • STL- 函数对象