предупреждение C4316: объект, выделенный в куче, может быть не выровнен 16
Важная информация:
Разработка ОС: Windows 8.1 64 битЦелевая ОС: Windows 8.1 64 битIDE: Visual Studio 2013 ProfessionalЯзык: C ++Проблема:
При компиляции проекта статической библиотеки через IDE я получаю следующее предупреждение:
warning C4316: ... : object allocated on the heap may not be aligned 16
Я мог бы просто проигнорировать это предупреждение ... но я предполагаю, что оно есть по какой-то причине, и я хотел бы хотя бы понять, что это значит и какие последствия это может иметь в будущем.
Я считаю, что эта строка кода связана с проблемой, который вызывается в моем классе оболочки Windows Win32:
m_direct3D = new Direct3D(this);
m_direct3D - указатель на мой класс-оболочку Direct3D.
Вот заголовочный файл для оболочки (Я признаю, что это нужно урезать):
#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;
};
}
}
Я попытался погуглить вопрос, но нашел мало информации. Информацию, которую я нашел, я не понял.
В заключение я прошу следующее:
Что означает C4316?Что вызывает это в моем коде?Какие последствия это может иметь в будущем, если я проигнорирую это?Как мне «исправить» проблему, из-за которой появляется это предупреждение?Дополнительная информация:
Когда я изменил диспетчер конфигурации Visual Studio для компиляции для x64, эта проблема не возникала.