You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C99中如何合并两个栈分配数组并优化栈内存占用

合并C99栈数组的高效方案(无malloc/汇编)

纯C99标准方案

方案1:结构体封装数组(零额外内存)

若可以提前规划数组定义,将两个栈数组封装到同一个结构体中,就能利用结构体成员的连续内存布局,直接获得合并后的连续数组,无需额外内存或复制操作:

#include <stdio.h>

int main() {
    const size_t len_a = 5;
    const size_t len_b = 3;
    // 结构体保证a和b内存连续
    struct {
        int a[len_a];
        int b[len_b];
    } stacked_arr = {{1, 2, 3, 4, 5}, {6, 7, 8}};
    
    // 指针直接覆盖两个数组的连续内存范围
    int *merged = stacked_arr.a;
    for (size_t i = 0; i < len_a + len_b; i++) {
        printf("%d ", merged[i]);
    }
    return 0;
}

该方案完全符合C99标准,栈内存占用仅为sizeof(a) + sizeof(b),无任何额外开销。缺点是无法直接处理已定义

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:20:33