首页 > 系统相关 >golang内存对齐的重要性

golang内存对齐的重要性

时间:2022-11-13 15:14:30浏览次数:51  
标签:Alignof fmt unsafe golang 内存 Println 对齐 Sizeof Offsetof

 

结构体中字段类型的改变直接造成内存对齐结果的改变,是的占用内存空间也不一样

package main

import (
	"fmt"
	"unsafe"
)

func main() {

	var xx struct {
		a bool
		b int32
		c []int
	}

	var x struct {
		a int32
		b []int
		c bool
	}
	fmt.Println("SIZE")
	fmt.Println(unsafe.Sizeof(x))  //32
	fmt.Println(unsafe.Sizeof(xx)) //40
	fmt.Println(unsafe.Sizeof(x.a))
	fmt.Println(unsafe.Sizeof(x.b))
	fmt.Println(unsafe.Sizeof(x.c))
	fmt.Println("ALIGN")
	fmt.Println(unsafe.Alignof(x))
	fmt.Println(unsafe.Alignof(x.a))
	fmt.Println(unsafe.Alignof(x.b))
	fmt.Println(unsafe.Alignof(x.c))
	fmt.Println("OFFSET")
	fmt.Println(unsafe.Offsetof(x.a))
	fmt.Println(unsafe.Offsetof(x.b))
	fmt.Println(unsafe.Offsetof(x.c))
}

  

 

标签:Alignof,fmt,unsafe,golang,内存,Println,对齐,Sizeof,Offsetof
From: https://www.cnblogs.com/itsuibi/p/16885984.html

相关文章

  • Go map 竟然也会发生内存泄露?
    Go程序运行时,有些场景下会导致进程进入某个“高点”,然后就再也下不来了。比如,多年前曹大写过的一篇文章讲过,在做活动时线上涌入的大流量把goroutine数抬升了不少,流量恢......
  • 又臭又长的字符串处理(简易内存池)
    #include<iostream>#include<vector>#include<string>usingnamespacestd;intmax=100;//分配函数voidalloc(vector<vector<int>>&address,intsize){ if(si......
  • golang:break,continue,return,goto使用区别
    break条件满足,跳出整个循环continue条件满足,跳出这次循环,但继续执行后面的循环return返回数据,结束当前函数或程序运行gotogo语言的goto可以无条件的转移到程序中指......
  • Python3.8多进程共享内存之Numpy数组
    在利用python处理数据的时候,想要充分发挥CPU的算力,可以选择利用多进程来实现。如果子进程内存占用较大的话,往往很难多开进程,如果不涉及对内存的写入操作,那么多个子进程共享......
  • 深入理解Java虚拟机——自动内存管理
    目录内存结构总览程序计数器(寄存器)各种码之间的关系程序计数器的特点虚拟机栈虚拟机栈溢出本地方法栈堆Heap堆内存溢出堆内存诊断方法区永久代和元空间对方法区的实现方法......
  • Golang:error包错误处理
    (目录)1、Golangerror包内建error接口//builtin.gotypeerrorinterface{Error()string}实现error接口//errors.gopackageerrorstypeerrorStrings......
  • 记录一次保持原电压实现内存超频
    最近身边朋友开始换新型号的电脑,内存也都换成了DDR5的,看着自己手上的几年前的电脑还用这ddr4的内存,想着要不也试试把内存频率调调,也搞个超频试试。 由于最初的想法就是......
  • Golang结构体方法和接收者
    结构体方法和接收者在go语言中,没有累的概念,但是可以给类型(结构体,自定义类型)定义方法。所谓方法就是定义了接收者的函数。接收者的概念就类似于其它语言中的this或者self。......
  • C温故补缺(九):字节对齐与排序
    字节对齐与排序字节对齐的原因与字节排序取自:VisualEther原文档下载:Gitee_packed_packet用于结构体中变量在内存中的对齐.如typedefstructtest_s{inti;......
  • 内存管理
    得分点段页式内存管理方式标准回答Linux操作系统是采用段页式内存管理方式:页式存储管理能有效地提高内存利用率(解决内存碎片),而分段存储管理能反映程序的逻辑结构并有......