结构体对齐,与 触发 segment fault 为什么是 1024*132 ,而不是1024*128

news2024/11/24 9:14:10

1, 简单的小示例代码

按理说 malloc 的size 是 1024*128,这里却需要 1024*132才能及时触发 segmentation fault

#include <stdlib.h>
#include <stdio.h>
#define SIZE 1024*131

int main()
{
        char *p = 0;
        p = malloc(SIZE);
        p[SIZE -1] = 'a';
        free(p);
        printf("p = %c\n", p[SIZE - 1]);
        p[SIZE-1] = 'b';
        printf("p = %c\n", p[SIZE -1]);

        return 0;
}

运行效果:

2,示例2

改成 1024*132

#include <stdlib.h>
#include <stdio.h>
#define SIZE 1024*132

int main()
{
        char *p = 0;
        p = malloc(SIZE);
        p[SIZE -1] = 'a';
        free(p);
        printf("p = %c\n", p[SIZE - 1]);
        p[SIZE-1] = 'b';
        printf("p = %c\n", p[SIZE -1]);

        return 0;
}

编译运行:

待解。。。

3, 结构体对齐

原则:按照sizeof 从小到大排序定义结构体成员,会比较节省空间

示例代码:

#include <stdio.h>

struct aaaa{
        char a;
        int  b;
        short c;
        char d;
};

struct bbbb{
        int b;
        char a;
        short c;
        char d;

};


struct cccc{
        int b;
        short c;
        char a;
        char d;

};

int main()
{
        printf("sizeof(aaaa) = %ld\n", sizeof(struct aaaa));
        printf("sizeof(bbbb) = %ld\n", sizeof(struct bbbb));
        printf("sizeof(cccc) = %ld\n", sizeof(struct cccc));

        return 0;

}

编译运行:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1826901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WWDC 2024 回顾:Apple Intelligence 的发布与解析

一年一度的苹果全球开发者大会&#xff08;WWDC&#xff09;如期而至&#xff0c;2024 年的 WWDC 再次成为科技界的焦点。本次发布会中&#xff0c;苹果正式推出了他们在 AI 领域的全新战略——Apple Intelligence。这一全新概念旨在为用户打造“强大、易用、全面、个性化、注重…

正运动邀您共聚2024深圳激光展,助力激光加工与智能制造!

■展会名称 2024深圳激光展 ■展会日期 2024年6月19日 - 21日 ■展馆地点 深圳国际会展中心&#xff08;新馆&#xff09; ■展位号 9H - D101 6月19至21日&#xff0c;深圳激光展将在中国深圳国际会展中心(新馆)举办。 激光加工在消费电子、光伏锂电新能源、半导体等行…

展厅设计要关注的基本点

1、设计方案 每个企业都会有不同的风格特色&#xff0c;找到一个合适企业的设计方案才是重点&#xff0c;所以在策划设计上要有一套个性化的方案。大到展厅内的结构&#xff0c;小到单个的展陈框架摆放&#xff0c;都要有详细的规划&#xff0c;这样才能够打造出一个效果突出的…

深度学习笔记: 最详尽估算送达时间系统设计

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家&#xff01; 估算送达时间 1. 问题陈述 构建一个模型来估算在给定订单详情、市场条件和交通状况下的总送达时间。 为…

探索Docker容器网络

Docker容器已经成为现代应用部署的核心工具。理解Docker的网络模型对于实现高效、安全的容器化应用至关重要。在这篇博客中&#xff0c;我们将深入探讨Docker的网络架构&#xff0c;并通过一些代码例子来揭示其底层实现。 Docker网络模式 Docker提供了多种网络模式&#xff0c…

大模型系列:C-Eval中文大模型评测数据集介绍和实践

前言 C-Eval是目前权威的中文AI大模型评测数据集之一&#xff0c;用于考察大模型的知识和推理能力&#xff0c;本篇对C-Eval数据集做简要介绍&#xff0c;并演示如何使用C-Eval对大模型进行评测。 内容摘要 C-Eval整体结构概述C-Eval数据预览C-Eval的Prompt范式Python脚本实现…

第九十一周周报

学习目标&#xff1a; 论文 学习时间&#xff1a; 2024.6.8-2024.6.14 学习产出&#xff1a; 一、Consistency Models 扩散模型依赖于迭代采样过程导致生成缓慢&#xff0c;由此提出一致性模型&#xff0c;其可以直接将噪声映射至数据从而生成高质量样别。 根据给定的OD…

Kotlin编程实践-【Java如何调用Kotlin中带默认值参数的函数】

问题 如果你有一个带有默认参数值的 Kotlin 函数&#xff0c;如何从 Java 调用它而无须为每个参数显式指定值&#xff1f; 方案 为函数添加注解JvmOverloads。 也就是为Java添加重载方法&#xff0c;这样Java调用Kotlin的方法时就不用传递全部的参数了。 示例 在 Kotlin …

【数学】什么是傅里叶级数与傅里叶变换?

傅里叶级数与傅里叶变换 背景 傅里叶级数和傅里叶变换是数学和工程领域中的重要工具&#xff0c;特别是在信号处理、图像处理和物理学中。傅里叶级数用于将周期函数表示为正弦和余弦函数的和&#xff0c;而傅里叶变换用于将任意函数表示为频率的函数。 公式 傅里叶级数&…

本地GPT-window平台 搭建ChatGLM3-6B

一 ChatGLM-6B 介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;新一代开源模型 ChatGLM3-6B 已发布&#xff0c;拥有10B以下最强的基础模型&#xff0c;支持工具调用&#xff08;Function Call&#xff09;、代码执行&#xff08;Code Interpreter&…

Linux Centos 环境下搭建RocketMq集群(双主双从)

1、下载rocketmq的包 下载 | RocketMQ 2、配置环境变量 1、编辑环境变量文件&#xff1a;vim /etc/profile2、加入如下配置&#xff1a; #rocketmq 4.9.8 ROCKETMQ_HOME/home/rocketmq/rocketmq-4.9.8 export PATH${ROCKETMQ_HOME}/bin:${PATH}3、刷新配置&#xff1a;source…

Apollo9.0 PNC源码学习之Control模块(三)—— 基于双环PID的纵向控制

本文将对Apollo的纵向控制器进行讲解&#xff0c;看完本文&#xff0c;你将会对百度Apollo的纵向控制有更深的理解 前面文章&#xff1a; Apollo9.0 PNC源码学习之Control模块&#xff08;一&#xff09; Apollo9.0 PNC源码学习之Control模块&#xff08;二&#xff09; 1 纵向…

SSM母婴用品交流系统-计算机毕业设计源码05772

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 母婴用品交流系统&#xff0c;主要的模块包括查看首页、轮播图管理、通知公告管理、资源管理&#xff08;母婴资讯、资讯分类&#xff09;、交…

Spring 系统架构图

Spring 系统架构图 Spring Framework是Spring生态圈中最基础的项目&#xff0c;是其他项目的根基。 Spring Framework的发展也经历了很多版本的变更&#xff0c;每个版本都有相应的调整 Spring Framework的5版本目前没有最新的架构图&#xff0c;而最新的是4版本&#xff0c;…

Unity2D计算两个物体的距离

1.首先新建一个场景并添加2个物体 2.创建一个脚本并编写代码 using UnityEngine;public class text2: MonoBehaviour {public GameObject gameObject1; // 第一个物体public GameObject gameObject2; // 第二个物体void Update(){// 计算两个物体之间的距离float distance Vec…

构建旧物回收系统的决策支持系统

内容概要&#xff1a; 在旧物回收系统中&#xff0c;构建一个有效的决策支持系统对于提高管理效率、优化资源配置具有重要意义。本文将探讨如何构建旧物回收系统的决策支持系统&#xff0c;并分析其如何辅助管理者做出更科学的决策。 一、决策支持系统的定义与功能 决策支持…

浔川身份证号码查询——浔川python科技社

Python获取身份证信息 公民身份号码是每个公民唯一的、终身不变的身份代码&#xff0c;由公安机关按照公民身份号码国家标准编制。每一个居民只能拥有一个唯一的身份证&#xff0c;它是用于证明持有人身份的一种法定证件。 身份证包含了个人的一些重要信息&#xff0c;比如&am…

Sky Master ULTIMATE Volumetric Skies Clouds Weather

该系统包含行业级优化的体积云、海洋系统、GI 代理,以及用于全局光照的优化 SEGI 和基于物理的天空渲染系统,且带有大气散射。 Sky Manager 可提供自动或按需的日/夜循环以及平滑的天气过渡。 Skybox 模式提供了与 Unity 及其功能(IBLGI、GI、Skybox)的完整集成。 先进的粒…

失眠焦虑?这些维生素或许能帮你找回好眠!

&#x1f4a4; 失眠、焦虑&#xff0c;是现代生活中不少人都可能遇到的问题。长期的失眠与焦虑&#xff0c;不仅影响身体健康&#xff0c;更会对精神状态造成不小的冲击。其实&#xff0c;除了调整作息和放松心情&#xff0c;适当的维生素补充也可能有助于改善这些症状。 &…

业务动态校验框架应用实现

目录 一、业务背景 二、配置内容展示 三、商品动态配置内容展示 &#xff08;一&#xff09;商品spu校验信息数据 &#xff08;二&#xff09;商品sku校验信息数据 &#xff08;三&#xff09;组包商品校验信息数据 &#xff08;四&#xff09;商品数据校验数据持有者 &…