При компиляции однобайтового массива на 100Мб gcc cъедает 15GB RAM
Есть сишный файл enclose_io_memfs.c с одним единственным массивом. Весь массив забит разными значениями, не нулями.
#include <stdint.h>
#include <stddef.h>
const uint8_t enclose_io_memfs[114798592] = { 104
,115,113,115,104,55,0,0,25,234,210,93,0,0,2,0,239,1,0,0,1,0,17,0,192,0,1,0,4,0,0,0,48,8,227,225,1,0,0,0,27,167,215,6,0,0,0,0,19,167,215,6,0,0,0,0,255,255,255,255,255,255,255,255,107,96,211,6,0,0,0,0,71,69,213,6,0,0,0,0,200,84,215,6,0,0,0,0,157,166,215,6,0,0,0,0,120,218,140,189,7,92
,206,223,251,63,126,119,183,247,78,37,148,138,38,161,97,183,148,22,146,189,147,172,148,202,222,90,146,221,64,70,40,35,73,40,100,100,84,36,69,50,43,217,178,178,202,200,202,250,31,159,243,60,239,175,115,255,188,30,143,191,199,227,233,188,238,171,211,185,207,235,58,215,185,214,25,45,245,240,243,20,75,73,137,216,63,105,81,111,209,159,79,26,230,226,255,125,118,1,253,171,81
...
};
При самой обычной компиляции gcc -c enclose_io_memfs.c
gcc 7.4 под убунтой 18.04 (стандартный, x64) съедает 15GB памяти! (1 процесс сс1).
Размер *.с файла - 400Мб, размер получившегося *.о файла - где-то чуть больше 100Мб. Но почему он ест 15Gb и как его отучить от этого? --param ggc-min-expand=0 --param ggc-min-heapsize=0
не помогают.