After removing all the calls to malloc and calloc from our code for an embedded system, I was surprised to find that malloc was still being linked in. The call graph pointed me to a function which had no explicit *alloc calls, and no calls to any library functions that might allocate, like strdup
.
I had to look at the generated assembly to realize that it was due to an inlined function which contained a VLA.
I thought VLAs had to be stack-allocated. Is this compiler broken?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…