gpt4 book ai didi

c - 节约变量使用

转载 作者:太空宇宙 更新时间:2023-11-04 06:30:13 24 4
gpt4 key购买 nike

我正在研究一些(嵌入式)设备,最近我开始考虑使用更少的内存,以防堆栈大小不是那么大。我有很长的功能(不幸的是)。在里面我想以这种方式节省空间。假设有代码

1. void f()
2. {
3. ...
4. char someArray[300];
5. char someOtherArray[300];
6. someFunc(someArray, someOtherArray);
7. ...
8. }

现在,想象一下,someArraysomeOtherArray 从未在 f 函数 beyond line: 6 中使用。下面会节省一些堆栈空间吗??

1. void f()
2. {
3. ...
4. {//added
5. char someArray[300];
6. char someOtherArray[300];
7. someFunc(someArray, someOtherArray);
8. }//added
9. ...
8. }

nb:删除了问题的第二部分

最佳答案

对于编译器本身,两者完全相同,因此没有区别。预处理器会将 TEXT1 的所有实例替换为字符串常量。

#define TEXT1 "SomeLongStringLiteral"
someFunc(TEXT1)
someOtherFunc(TEXT1)

预处理器的工作完成后,上面的代码片段变成了

someFunc("SomeLongStringLiteral");
someOtherFunc("SomeLongStringLiteral");

因此它对性能或内存没有影响。

旁白: #define TEXT1 "SomeLongStringLiteral" 之所以被完成,是为了有一个地方来更改 TEXT1 用法的所有实例;但这只是为了方便程序员,对生成的输出没有影响。

recently I just started thinking maybe to use less memory, in case stack size isn't that big.

切勿微优化或过早优化。 如果堆栈大小不是那么大,您将在对它进行基准测试/测量时了解它。优化时不要做任何假设; 99% 的时候它是错误的。

关于c - 节约变量使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21571231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com