C语言结构体占用内存的原理和影响因素,能否详细深入讲解?

2026-04-19 03:430阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1278个文字,预计阅读时间需要6分钟。

C语言结构体占用内存的原理和影响因素,能否详细深入讲解?

前言:前几天下有个小友问了下我,关于C语言结构体占用空间的问题。感觉会对小可爱有点帮助,就先算下写一下。

struct Test{ int a; char b; int c;} test;

理论上,结构体Test中各个成员占用空间如下:- int a: 通常占用4字节- char b: 占用1字节- int c: 通常占用4字节

所以,结构体Test的总占用空间为:4 + 1 + 4=9字节。

前言

前几天有个小朋友问了我一下,关于C语言结构体占用空间的问题。觉得以后会对小可爱有点帮助,就打算先写一下。

struct Test { int a; char b; int c; } test;

理论上,结构体中的各个成员在内存中应该是连续储存的,就像数组里面的元素一样。事实上,也确实是这个样子的,不过和我们想象的有点不一样。

按照我们最初的想法,变量test所占的内存为 4 + 1 + 4 = 9。

但是我们写一个小代码验证一下发现和我们想的不一样。

它的内存为12。因为 int类型是4个字节,所以是不是各个成员的内存都是按照最大的那个设置呢?毕竟 4 * 3 = 12,我们再次实验,

如果按照我们的推测,那么内存大小应该是 8 * 3 = 24。为何是16呢?

下面我来总结一下。

总结

C语言结构体所占内存大小,其实里面涉及到C语言内存对齐,提高寻址效率的一种思想在里面。具体我就不在这里展开来说了,有兴趣的可以自己百度了解一下。

阅读全文

本文共计1278个文字,预计阅读时间需要6分钟。

C语言结构体占用内存的原理和影响因素,能否详细深入讲解?

前言:前几天下有个小友问了下我,关于C语言结构体占用空间的问题。感觉会对小可爱有点帮助,就先算下写一下。

struct Test{ int a; char b; int c;} test;

理论上,结构体Test中各个成员占用空间如下:- int a: 通常占用4字节- char b: 占用1字节- int c: 通常占用4字节

所以,结构体Test的总占用空间为:4 + 1 + 4=9字节。

前言

前几天有个小朋友问了我一下,关于C语言结构体占用空间的问题。觉得以后会对小可爱有点帮助,就打算先写一下。

struct Test { int a; char b; int c; } test;

理论上,结构体中的各个成员在内存中应该是连续储存的,就像数组里面的元素一样。事实上,也确实是这个样子的,不过和我们想象的有点不一样。

按照我们最初的想法,变量test所占的内存为 4 + 1 + 4 = 9。

但是我们写一个小代码验证一下发现和我们想的不一样。

它的内存为12。因为 int类型是4个字节,所以是不是各个成员的内存都是按照最大的那个设置呢?毕竟 4 * 3 = 12,我们再次实验,

如果按照我们的推测,那么内存大小应该是 8 * 3 = 24。为何是16呢?

下面我来总结一下。

总结

C语言结构体所占内存大小,其实里面涉及到C语言内存对齐,提高寻址效率的一种思想在里面。具体我就不在这里展开来说了,有兴趣的可以自己百度了解一下。

阅读全文