Skip to content

Investigate data padding within classes and structs #829

Open
@Mauller

Description

@Mauller

the most significant number of warnings when /Wall is used revolves around padding bytes being added to various classes and structs.

In some instances dozens of bytes can be added to a single object as padding due to the ordering of data within it.

Optimising this should help with memory usage and cache friendliness of data structures.

The warning is C4820 for reference and requires /Wall to be used.

Some examples of some of the most used classes:

'Object': '5' bytes padding added after data member 'Object::m_lastWeaponCondition'
'Object': '4' bytes padding added after data member 'Object::m_isReceivingDifficultyBonus'
'Object': '4' bytes padding added after data member 'Object::m_prev'
'Object': '2' bytes padding added after data member 'Object::m_visionSpiedMask'
'PointGroupClass': '3' bytes padding added after data member 'PointGroupClass::FrameRowColumnCountLog2'
'PointGroupClass': '2' bytes padding added after data member 'PointGroupClass::DefaultPointFrame'
'PointGroupClass': '3' bytes padding added after data member 'PointGroupClass::Billboard'
'Render2DSentenceClass': '3' bytes padding added after data member 'Render2DSentenceClass::MonoSpaced'
'Render2DSentenceClass': '3' bytes padding added after data member 'Render2DSentenceClass::Centered'
'Render2DSentenceClass': '1' bytes padding added after data member 'Render2DSentenceClass::useHardWordWrap'
'FontCharsClass': '3' bytes padding added after data member 'FontCharsClass::IsBold'
'StealthUpdate': '3' bytes padding added after data member 'StealthUpdate::m_xferRestoreDisguise'
'StealthUpdateModuleData': '3' bytes padding added after data member 'StealthUpdateModuleData::m_grantedBySpecialPower'
'StealthUpdate': '3' bytes padding added after data member 'StealthUpdate::m_enabled'
'StealthUpdate': '1' bytes padding added after data member 'StealthUpdate::m_disguised'
'WeaponTemplate': '3' bytes padding added after data member 'WeaponTemplate::m_isScaleWeaponSpeed'
'WeaponTemplate': '3' bytes padding added after data member 'WeaponTemplate::m_damageDealtAtSelfPosition'
'WeaponTemplate': '3' bytes padding added after data member 'WeaponTemplate::m_playFXWhenStealthed'
'WeaponTemplate': '3' bytes padding added after data member 'WeaponTemplate::m_dieOnDetonate'
'Weapon': '2' bytes padding added after data member 'Weapon::m_leechWeaponRangeActive'

Metadata

Metadata

Assignees

No one assigned

    Labels

    InvestigateMemoryIs memory relatedMinorSeverity: Minor < Major < Critical < Blocker

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions