Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6176573
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 24, 20262026-05-24T00:07:30+00:00 2026-05-24T00:07:30+00:00

Can anybody please explain what’s going on? My MSVC 2008 project’s structure member alignment

  • 0

Can anybody please explain what’s going on?

My MSVC 2008 project’s structure member alignment setting is set to 16 bytes (/Zp16) alignment, however one of the following structures is being aligned by 16 bytes and another is aligned only by 8 bytes… WHY?!!!

struct HashData
{
    void *pData;
    const char* pName;
    int crc;
    bool bModified;
}; // sizeof (HashData) == 4 + 4 + 4 + 1 + padding = 16 bytes, ok

class StringHash
{
    HashData data[1024];
    int mask;
    int size;
}; // sizeof(StringHash) == 1024 * 16 + 4 + 4 + 0 = 16392 bytes, why not 16400 bytes?

This may not look like a big deal, but it’s a big problem for me, since I am forced to emulate the MSVC structures alignment in GCC and specifying the aligned(16) attribute makes the sizeof (StringHash) == 16400!

Please tell me, when and why MSVC overrides the /Zp16 setting, I absolutely can’t fathom it…

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-24T00:07:31+00:00Added an answer on May 24, 2026 at 12:07 am

    I think you misunderstood the /Zp16 option.

    MSDN says,

    When you specify this option, each structure member after the first is
    stored on either the size of the member type or n-byte boundaries
    (where n is 1, 2, 4, 8, or 16), whichever is smaller.

    Please read the “whichever is smaller”. It doesn’t say that the struct will be padded by 16. It rather defines the boundary of each member relative to each other, starting from the first member.

    What you basically want is align (C++) attribute, which says

    Use __declspec(align(#)) to precisely control the alignment of user-defined data

    So try this:

    _declspec(align(16)) struct StringHash
    {
        HashData data[1024];
        int mask;
        int size;
    }; 
    
    std::cout << sizeof(StringHash) << std::endl;
    

    It should print what you expect.

    Or you can use #pragma pack(16).

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Can anybody please explain how this could possibly happen? I am completely aware of
can anybody please explain what are these special tags in php? <?= ?> I
I am new to python,can anybody please explain the following syntax, for i in
please can anybody explain this code from C++ Reference site : #include <iostream> #include
Please can anybody explain to me what this means? vector<int> myvector(4,99);
Can anybody please explain the following line about the designated initializers: The initializer list
Can anybody please explain the meaning of $< and $@ in a Makefile ?
Can anybody explain the following Perl code for me, please? I think its in
Can anybody please explain multitask learning in simple and intuitive way? May be some
In the context of ASP.Net MVC 2.0, can anybody please explain why do we

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.