Наши читатели подсказывают нам, что в рассмотренном ранее примере может быть алиасинг.
Действительно, если у нас такое вот:
- class someShit{
- char *m_sBuffer;
- size_t m_iLimit;
- size_t m_iCounter;
- };
- m_sBuffer = (char*)&m_iCounter;
Меняю объявление на такое:
- class someShit{
- char m_sBuffer[10240];
- size_t m_iLimit;
- size_t m_iCounter;
- };
- void someShit::try1()
- {
- m_iCounter = 0;
- while (m_iCounter< m_iLimit && m_sBuffer[m_iCounter])
- m_iCounter++;
- }
Исходный вопрос (как отключить) снимается, restrict/__restrict в помощь, ключи компиляции опять-же есть.
Comments
Post new comment