作者dreamboat66 (小嫩)
看板C_and_CPP
标题Re: [问题] Pointer alignment 问题
时间Fri Mar 3 00:06:17 2017
藉此标题延伸问一个问题~
http://stackoverflow.com/questions/11781724/do-i-really-have-to-worry-about-alignment-when-using-placement-new-operator
缩成
https://goo.gl/GYsFKF
也许是我阅读障碍
我试着理解他的英文但我看不太懂
一开始他贴
18.6.1.3 Placement forms [new.delete.placement]
说这函数被保留 <== 什麽函数 void* operator new(吃size跟void*) 吗?
C++ program 不应该有函数取代这个 (但就我理解不是可以overload operator new?)
The provisions of (3.7.4) include that the returned pointer should be
suitably aligned, so it's fine for void* operator new (std::size_t size,
void* ptr) noexcept to return a nonaligned pointer if one is passed in. This
doesn't let you off the hook
这段整个看不懂, provisions of (3.7.4) 这是什麽? 然後他讲的听起来是
你overload後 return出一个ptr+1 byte 不aligned的也没关系.
然後第二块黄色的又看起来说assumed要aligned.
然後突然一个结论
So if you pass unaligned storage to a placement-new expression you're
violating the assumption that the storage is aligned, and the result is UB.
说不能unaligned.....
完全无法理解整个解答
在这边请教一下各位
是不是只有我看不太懂, 还是我必须要有什麽background才能
谢谢˙
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.218.202.250
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1488470780.A.828.html