首页 > 其他分享 >【C语言】sizeof

【C语言】sizeof

时间:2024-10-15 08:53:02浏览次数:8  
标签:tmp 内存大小 C语言 sizeof 指针 buf size

tmp_buf = (char *)malloc(size)不可以直接使用`sizeof`来查看动态分配内存的大小。在C语言中,`sizeof`操作符是在编译时确定类型或对象的大小,并不能用于动态获取malloc分配的内存大小。
下面解释为什么不能用`sizeof(tmp_buf)`查看动态分配的内存大小:
1. 编译时 vs 运行时: sizeof是编译时操作符,计算的是类型大小或者静态声明的数组大小。而`malloc`是在运行时请求内存,其返回的是一个指向分配内存块的指针。
2. 指针大小: 在`tmp_buf`是一个指向已分配内存的指针时,`sizeof(tmp_buf)`返回的是指针的大小(在大多数平台上是4字节或8字节),而不是实际分配的内存大小。

查看内存大小的正确方法

通常在进行内存分配后,开发者应该自己记录下分配的内存大小。需要管理和追踪内存分配,可以使用数据结构(例如结构体)来保存相关信息。
以下是一种实现方法:

typedef struct {
    char *buffer;
    size_t size;
} Buffer;

Buffer allocate_buffer(size_t size) {
    Buffer buf;
    buf.buffer = (char *)

标签:tmp,内存大小,C语言,sizeof,指针,buf,size
From: https://blog.csdn.net/eidolon_foot/article/details/142906440

相关文章

  • C语言学习笔记(3)
    提前批第二题:#include<stdio.h>#defineN10voidReadData(inta[],intn);voidPrintData(inta[],intn);voidMaxMinExchange(inta[],intn);voidmain(){ inta[N],n; printf("Inputn(n<=10):\n"); scanf("%d",&n); if(n>0&......
  • C语言学习第二章
    目录1、程序设计1.1、选择结构1.2、循环语句1.3、break(退出)与continue(继续)1.4、goto语句2、例题1、求解1~100的和2、从键盘上输入一个学生的成绩,判断该学生成绩等级:3、完成两个数的四则运算4、输入整数a和整数b,将a时将其反序<>5、从键盘输入一个三位整数,判断它......
  • 基础架构补全—C语言基础入门篇(二)
    前言:    上一篇博客我仅简单对C语言语法基础进行了简单介绍,这次我将对其中遗漏知识进行补全及延申,但冰冻三尺非一日之寒,现在我也只不过是站在C语言的光辉大门前罢了,尚没有彻底迈出一步,希望各位能共励共勉,在接下来的学习中都能,鹏程发韧,培风图南,日进一卒,功不唐捐!1.注释......
  • C语言经典100例-第八题(想提升C语言代码能力的看过来!)
    持续更新!!!1.刷题链接和地址: C语言教程|菜鸟教程 菜鸟教程C语言专栏这里的"C经典100例"(看红色框框)2.解题:2.1读题:题目呢,就是输出99乘法表,就是1*1=12*1=2,然后一直到9*9,也是很简单的一道题目 这个就是输出的结果样式 2.2解题思路:首先呢,我们是不是应该考虑......
  • 【C语言刷力扣】2206.将数组划分成相等数对
    题目:解题思路:    题目中要求元素成数对出现,即每个元素出现偶数次。用哈希表存放每个数出现的次数,再循环查看每个数的次数是否位偶数。typedefstruct{intkey;intcount;UT_hash_handlehh;}hashEntry;booldivideArray(int*nums,intnumsS......
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.4
    文章目录猜数字游戏专题1.随机数生成1.1rand1.2srand1.3time1.4随机数的范围2.猜数字游戏的实现希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!猜数字游戏专题掌握了前面学习的vlog的知识,尤其是分支与循环,我们可以写一个经典有趣的游戏:猜数......
  • C语言-用指针遍历二维数组
    一、1.用一级指针遍历二维数组7#include<stdio.h>89intmain(intargc,char*argv[])10{11inta[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};12int*p;13p=*a;14inti;15for(i=0;i<12;i++){16if(i!=0&&i%4==0)17......
  • C语言实现将一个输入的十进制数转换为二进制输出
    一、意义  由于计算机是由一系列电子元件组成的,这些元件只能处理两种状态:开和关。这两种状态可以用二进制表示,其中0代表关闭状态,1代表开启状态。因此,计算机只能存储和处理二进制数。二、原理方法除二取余法是一种将十进制数转换为二进制数的方法。其原理如下:将待转换的......
  • C语言学习3
    二分法查找    二分法查找,也称为折半查找,是一种在有序数组中查找特定元素的高效算法。该算法的基本思想是将数组分成两半,比较中间元素与目标值的大小,然后选择一半继续查找,直到找到目标值或确定目标值不存在。步骤确定数组的左右边界索引,通常左边界为0,右边界为数组......
  • 初始C语言
    目录引语计算机语言的发展一.c语言的定义第一个c语言程序二.数据类型1.数据类型大小计算机单位换算......