我在内存受限的环境中工作,需要动态创建字符串,但仍然不占用堆内存。那么这是否有意义:
static char staticStringBuffer[10240];
static size_t staticStringWatermark = 0;
void createString( const char * something, const char * somethingElse ) {
char buf[1024];
strcat(buf, "test");
strcat(buf, something);
strcat(buf, somethingElse);
strcat(&staticStringBuffer[staticStringWatermark], buf);
staticStringWatermark += strlen(buf+1);
}
这可能是 dosent 编译,但我正在尝试理智 - 为堆内存牺牲静态内存?
谢谢你^_^
最佳答案
这当然取决于您的特定环境在加载您的程序时所做的事情;程序的静态数据放在哪里?在许多操作系统上,程序被加载到堆内存中并从那里运行,因此您的静态数据最终仍将位于堆中。
关于c - 静态内存与堆内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2271976/