golang atomic 32位机器问题

测试过程中发现一个atomic.AddInt64()报内存错误 32位window,linux下都不能正常运行 示例代码: <!-- lang: cpp --> package main

import(
	"fmt"
	"sync/atomic"
)
type item struct{
	//c int32
	d int32
	a int64
}
type Obj struct{
	list map[string]*item	
}
func (ob *Obj)Init(){
	ob.list = make(map[string]*item)
	ob.list["a"] = &item{}
}
func (ob *Obj)Add(){
	atomic.AddInt64(&ob.list["a"].a,12)
	fmt.Println(ob.list["a"].a)
}
func main(){
	fmt.Println("Hello World")
	 
	obj := new(Obj)
	obj.Init()    	
	fmt.Printf("%v\n",obj.list["a"])
	obj.Add()	    	
}

最终找到问题现象是,结构体item中 a 之前元素,必须是双数的int类型才能正常运行,去掉上面代码的注释行就能正常运行 估摸可能的原因与结构体初始化时,底层分配内存相关。 解决办法是暂时定义item时小心一些

转载于:https://my.oschina.net/yanhuu/blog/177752

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值