|
|
1
4
当然,这取决于特定环境在加载程序时所做的操作;程序的静态数据放在哪里?在许多操作系统上,程序被加载到堆内存中并从内存中运行,因此静态数据仍然会出现在堆中。 |
|
|
2
1
那就行了。如果strlen(something)+strlen(somethinggelse)>=10240,则需要注意不要写超过静态缓冲区的末尾,这在示例中会发生。 |
|
|
3
1
我同意放松。 当强制使用静态分配时,我通常在使用它们的范围内(即在函数本身内)分配这些块。 即
…当然,确保createString()中的条目受到某种互斥的保护,并且调用方不需要修改结果。 取决于编译器,ymmv。你真的需要全球化吗? |
|
|
4
0
如果内存真的有那么大的限制,难道不能直接将/strcat附加到staticStringBuffer而不是临时buf上吗? 我认为你知道这段代码不是线程安全的吗?你可能不需要这么做,只是确定一下。 也可以使用strncat而不是strcat-它可以防止缓冲区溢出。 |
|
|
5
0
如果需要动态创建字符串,则需要一个堆,但不一定是随C运行库提供的默认堆。如果您处于非常有限的环境中,请不要动态创建字符串。 |