为什么全局结构和成员变量(相同类型)的内存设置为全局不同
Why is the memory of a global structure and a member variable (of the same type) set equal to the global different?
我正在构建这样一个对象:
TestObj::TestObj(const TypedefStruct& myStruct) : m_memberStruct(myStruct){}
结构如下所示:
CCD_ 2。它是CCD_ 3的公共成员
当我比较传入构造函数的全局myStruct
的内存和TestObj
的m_memberStruct
成员变量时,内存内容不同。
PS:我正在初始化全局结构,如下所示:TestObj::TypeDefStruct myStruct = {0};
我读到编译器有时会填充结构的元素,使每个元素的大小相同,这可能会干扰比较全局结构的内存和它的"副本",但我认为这不适用于这里,因为它是一个相同类型的两元素结构。。。
对情况有什么见解吗?如果除了检查两个元素的值之外,我还不能真正比较内存,我仍然想了解为什么内存内容不同。
编译器可以填充m_memberStruct,因为它是TestObj的一部分。也就是说,它可以尝试给TestObj适当的对齐。
您确定查看的是数据而不是对象的地址吗?
您可以尝试将变量初始化为易于识别的值,然后查看:
myStruct.x = 0xAA;
myStruct.y = 0xBB;
相关文章:
- OpenCL 将字符从全局内存复制到本地内存
- 为什么CUDA共享内存比瓷砖矩阵乘法中的全局内存慢
- Opencl-将全局内存工作组+边界转移到本地内存
- Cuda-从设备全局内存复制到纹理内存
- 如何在 CUDA 中正确使用全局内存?
- 是通过计算能力1.x的设备中的缓存的全局内存负载/商店
- 全局内存写入在 CUDA 中是否被视为原子写入
- CUDA中更快的是:全局内存写入+__threadfence()或atomicExch()到全局内存
- CUDA 线程在全局内存中的私有位置写入时出现错误结果
- 无法使用 CUDA + MATLAB + Visual Studio 检查全局内存
- CUDA 中的全局内存和纹理有什么区别?
- 调用多个内核,全局内存性能 - CUDA
- 将一系列整数写入全局内存的快速(est)方法
- CUDA:全局内存访问地址
- 简单的加法示例:共享内存版本的reduce执行速度比全局内存慢
- 如何将图像从全局内存复制到openCL的本地内存
- CUDA:将全局内存写入和读取与计算能力同步 1.1
- CUDA全局内存
- 如何将全局内存中的数据安全地加载到 CUDA 中的共享内存中
- 在同一全局内存位置并发写入