aviso C4316: objeto alocado no heap não pode ser alinhado 16

Informação importante:

SO de desenvolvimento: Windows 8.1 de 64 bitsSO de destino: Windows 8.1 de 64 bitsIDE: Visual Studio 2013 ProfessionalIdioma: C ++

O problema:

Recebo o seguinte aviso ao compilar meu projeto de biblioteca estática por meio do IDE:

warning C4316: ... : object allocated on the heap may not be aligned 16

Eu poderia simplesmente ignorar este aviso ... mas estou assumindo que existe por um motivo e gostaria de pelo menos entender o que isso significa e quais implicações ele poderia ter no futuro.

Eu acredito que esta linha de código está relacionada ao problema, que é chamado dentro da minha classe de wrapper de janela do Win32:

m_direct3D = new Direct3D(this);

m_direct3D é um ponteiro para minha classe de wrapper Direct3D.

Aqui está o arquivo de cabeçalho para o wrapper (Eu admito que precisa ser aparada):

#pragma once

// Windows
#include <d3d11.h>
#include <DirectXMath.h>

// Standard
#include <stdint.h>
#include <vector>

// JGlib
#include "Window.h"

namespace JGlib
{
    namespace Graphics
    {
        class Direct3D
        {
        public:
            // Construtor and destructor
            Direct3D(const JGlib::Graphics::Window* window);
            ~Direct3D();

            // Public methods
            void Initialise();
            void BeginDraw();
            void Draw();
            void EndDraw();

        private:
            // Private methods

            // Private member variables
            const Window*               m_window;
            ID3D11Device*               m_device;
            IDXGIAdapter*               m_adapter;
            DXGI_ADAPTER_DESC           m_adapterDescription;
            uint32_t                    m_videoCardMemory;
            IDXGIFactory*               m_factory;
            IDXGIOutput*                m_monitor;
            DXGI_MODE_DESC*             m_displayModes;
            uint32_t                    m_numberOfModes;    
            DXGI_RATIONAL               m_refreshRate;
            DXGI_SWAP_CHAIN_DESC        m_swapChainDescription;
            D3D_FEATURE_LEVEL           m_featureLevel;
            ID3D11DeviceContext*        m_deviceContext;
            IDXGISwapChain*             m_swapChain;
            ID3D11Texture2D*            m_backBuffer;
            ID3D11RenderTargetView*     m_renderTargetView;
            ID3D11Texture2D*            m_depthStencilBuffer;
            D3D11_TEXTURE2D_DESC        m_depthBufferDescription;
            D3D11_DEPTH_STENCIL_DESC    m_depthStencilDescription;
            ID3D11DepthStencilState*    m_depthStencilState;
            ID3D11DepthStencilView*     m_depthStencilView;
            D3D11_RASTERIZER_DESC       m_rasterDescription;
            D3D11_VIEWPORT              m_viewport; 
            float                       m_fieldOfView;
            float                       m_screenAspectRatio;
            ID3D11RasterizerState*      m_rasterState;
            DirectX::XMMATRIX           m_projectionMatrix;
            DirectX::XMMATRIX           m_worldMatrix;
            DirectX::XMMATRIX           m_orthographicMatrix;
            float                       m_screenDepth;
            float                       m_screenNear;
        };
    }
}

Eu tentei googling o problema, mas encontrou pouca informação. A informação que encontrei não entendi.

A concluir, estou perguntando o seguinte:

O que significa o C4316?O que está causando isso no meu código?Que implicações isso poderia ter no futuro, se eu ignorar isso?Como faço para "corrigir" o problema que está causando esse aviso?

Informação adicional:

Quando mudei o gerenciador de configuração do Visual Studio para compilar para x64, esse problema não ocorre.

questionAnswers(4)

yourAnswerToTheQuestion