我想知道C编译器的字符串行为
我在GCC中使用Windows 7代码块
int main()
{
"1145"; "ho";
printf("hello");
}
所以我想知道未使用的字符串是否占用内存空间
最佳答案
首先,您需要了解l(eft)值和r(ight)值。
l值实际上是存储对象的存储位置。
r值是数据,应该存储在内存中的某个位置(l值)。
所以你的构造"1145"; "ho";
生成两个未在任何地方分配的r值。您甚至可以使此代码(完全有效):
int main(){
;;
printf("hello");
}
这是允许的,因为
;
是null statement
运算符。您将不会一次看到如下表达式while(*ptr++); // ajusts pointer until contents of the pointer become 0
其中
while
实际上在执行每次迭代;
我有99%的把握确保此字符串根本不使用任何空间,因为没有任何选项的GCC会识别未使用的语句,并且不会为该行生成任何代码。
关于c - 我想知道未使用的字符串是否占用空间,以及为什么程序会用过的字符串运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57307172/