message: RefCountedObjectImpl: use alignment for object wrapper buffer
diff: @@ -134,7 +134,7 @@ public:
  //
  if (NumWeakReferences == 0 && /*m_NumStrongReferences == 0 &&*/ m_ObjectState.load() == ObjectState::Destroyed)
  {
  - VERIFY_EXPR(m_NumStrongReferences == 0);
  + VERIFY_EXPR(m_NumStrongReferences.load() == 0);
  VERIFY(m_ObjectWrapperBuffer[0] == 0 && m_ObjectWrapperBuffer[1] == 0, "Object wrapper must be null");
  // m_ObjectState is set to ObjectState::Destroyed under the lock. If the state is not Destroyed,
  // ReleaseStrongRef() will take care of it.
  @@ -388,7 +388,7 @@ private:
  // So we copy the object wrapper and destroy the object after unlocking the
  // reference counters
  - size_t ObjectWrapperBufferCopy[ObjectWrapperBufferSize];
  + alignas(ObjectWrapper<IObjectStub, IMemoryAllocator>) size_t ObjectWrapperBufferCopy[ObjectWrapperBufferSize];
  memcpy(ObjectWrapperBufferCopy, m_ObjectWrapperBuffer, sizeof(m_ObjectWrapperBuffer));
  memset(m_ObjectWrapperBuffer, 0, sizeof(m_ObjectWrapperBuffer));
  @@ -475,7 +475,7 @@ private:
  // which does have virtual destructor.
  static constexpr size_t ObjectWrapperBufferSize = sizeof(ObjectWrapper<IObjectStub, IMemoryAllocator>) / sizeof(size_t);
  - size_t m_ObjectWrapperBuffer[ObjectWrapperBufferSize]{};
  + alignas(ObjectWrapper<IObjectStub, IMemoryAllocator>) size_t m_ObjectWrapperBuffer[ObjectWrapperBufferSize]{};
  std::atomic<ReferenceCounterValueType> m_NumStrongReferences{0};
  std::atomic<ReferenceCounterValueType> m_NumWeakReferences{0};
  