Sfondo: il compilatore può inserire il riempimento in una struttura per rendere i membri più allineati. Ciò comporterà la dimensione della struttura maggiore della somma delle dimensioni dei suoi membri. Riordinare i membri della struttura in modo che possano fare il pacchetto migliore può rimuovere la necessità che il compilatore esegua il pad in questo modo e rendere la struttura più piccola, risparmiando memoria. Ho bisogno di ottenere quei risparmi di memoria.Come trovare tutte le strutture che potrebbero essere rese più piccole cambiando l'ordine dei membri
L'opzione di fallback è controllare ogni struttura a mano. Sto cercando un approccio automatico che possa ridurre lo sforzo.
Anche se riduce solo il numero di strutture da controllare a mano che potrebbero essere d'aiuto.
Quindi ad esempio un processo/strumento/etc che elenca tutte le strutture che sono più grandi della somma delle dimensioni dei loro membri, mentre non perfetto sarebbe comunque utile in quanto limiterebbe quelle che devono essere controllate manualmente .
Qualcuno sa di alcuni strumenti che possono fare questo o qualcuno può suggerire qualsiasi approccio che potrebbe aiutare.
p.s. Devo farlo su una base di codice C incorporata contenente oltre 1 milione di righe di codice.
Molti compilatori hanno un'opzione per comprimere le strutture strettamente - su MSVC++ questo è '/ Zp', su gcc è' -fpack-struct'. Si noti che (1) questo interromperà la compatibilità ABI con altri codici e (2) la maggior parte delle CPU gestirà gli accessi ai dati non allineati più lentamente (o per niente su alcune architetture). –