C语言知识点:sizeof的使用与注意事项

本文探讨了C语言中sizeof的使用,包括基本数据类型、数组、指针和结构体的字节大小计算。强调了正确使用sizeof避免内存越界访问的重要性。通过实例分析,指出数组作为函数参数时sizeof返回的是指针大小,而strlen用于获取字符串长度而非数组总大小。文章还列举了错误示例,警示了不恰当使用sizeof可能导致的缓冲区溢出和程序异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • sizeof在C语言中比较的常见,需要熟悉正确的使用
  • 需要熟悉基本数据类型、数组、指针、结构体的字节大小
  • 防止计算出错,引起内存的越界访问。

实例与分析

  • 嵌入式软件开发中,会经常遇到缓冲区溢出、内存溢出、栈溢出、内存写穿等问题
  • 需要实时调试验证自己的内存操作,无论是静态还是动态的内存,地址的计算、指针的计算,是否正确。
#include <rtthread.h>
#include <string.h>

#define TEST_BUF_SIZE     32

struct test_msg
{
    rt_uint32_t id;
    rt_uint32_t cmd;
    rt_uint32_t value;
    rt_uint8_t *data;
    rt_uint32_t data_len;
};

void dump_struct_size(void)
{
    rt_kprintf("sizeof(struct rt_thread)=%d\n", sizeof(struct rt_thread));
    rt_kprintf("sizeof(struct rt_memheap)=%d\n", sizeof(struct rt_memheap));
    rt_kprintf("sizeof(struct rt_device)=%d\n", sizeof(struct rt_device));
    rt_kprin
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangsz_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值