【发布时间】:2018-01-19 18:18:04
【问题描述】:
我有一个结构:
typedef struct mystruct_s {
uint8_t bufferA[1024];
uint8_t bufferB[1024];
} mystruct;
mystruct mystructA;
mystruct mystructB;
for( i = 0 ; i < 1024 ; i++ )
{
mystructA.bufferA[i] = 0x01;
mystructA.bufferB[i] = 0x01;
mystructB.bufferA[i] = 0x01;
}
在我的程序中,我访问了 mystructA 中的两个缓冲区成员,但只访问了 mystructB 中的 bufferA。
如果 mystructB 中的成员 bufferB 未被访问,编译器是否会对其进行优化以节省内存?
我知道由于不同编译器的性质,这可能看起来模棱两可。
例如,如果我在 Keil 下为 STM32F4 使用 ARM C/C++ 编译器,它会做什么?
【问题讨论】:
-
用优化构建它,看看生成的代码,你会看到编译器实际上做了什么。
标签: c optimization compiler-construction arm