sizeof («…») в Visual C ++ меня расстраивает

Я писал фрагмент кода, в котором я использовал sizeof ("somestring") как параметр функции, то я заметил, что функция не возвращает ожидаемое значение, поэтому я пошел посмотреть соответствующий asm-код и обнаружил неприятный сюрприз. Есть ли у кого-нибудь объяснение этому (см. Рисунок)?

Watch window shows sizeof==4, asm 5

Я знаю, что существует более 1000 различных способов сделать это, я уже реализовал другой из них, но я хочу знать причину такого поведения.

Для любопытных это Visual Studio 2008 SP1.

7
задан 10 November 2015 в 14:20
поделиться