c - 静态内存与堆内存?

标签 c memory

我在内存受限的环境中工作,需要动态创建字符串,但仍然不占用堆内存。那么这是否有意义:

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/

相关文章:

python-3.x - sys.intern() 做什么以及何时使用?

c++ - 哪个更快 : Assigning same value to a variable, 或找出它是否已经设置?

c - 如何在 C 中表示 float 的二进制乘法?

c - 将变量设置为等于递减变量是否会更改该变量的所有值?

c - 在内存中动态分配矩阵时的问题

你能发现这段代码中的逻辑错误吗?计数

c - 如何在 CAPL 中包含 .dll 文件?

java - Java 中的静态和动态内存

c++ - Qlist<QCameraInfo> 在 QList 析构函数中导致访问冲突

c# - 在闲置的应用程序中,是什么导致我的 C#.NET 内存泄漏?