Вы увеличиваете не ту вещь.
У вас есть массив указателей, верно?И у вас также есть указатель на указатель в этом массиве .
Вы увеличиваете один из указателей объекта, а не указатель массива.
Array Hypothetical Objects Your pointer
"array pointer" (scattered) "Core32"
┃
╔══════╗ «━━━━ aPtr ╔═══════╗ ┃
║ ptr1 ║━━━━━━━━━━━━━━━━━━━━━━»║ ARMv7 ║«━━━━━━━━━━━━━━┛
╠══════╣ ↓ ++aPtr ╚═══════╝
║ ptr2 ║━━━━━━━━━━━━━━━━━━━━━━━━┓ ╔═══════╗
╠══════╣ ↓ ++aPtr ┃ ╔═══════╗ ┏━━━»║ ARMv8 ║
║ ptr3 ║━━━━━━━━━━━━━━━━━━━━━━┓ ┗━»║ ARMv7 ║ ┃ ╚═══════╝
╠══════╣ ↓ ++aPtr ┃ ╚═══════╝ ┃
║ ptr4 ║━━━━━━━━━━━━━━━━━━━━━┓┗━━━━━━━━━━━━━━━┛ ╔═══════╗
╠══════╣ ↓ ++aPtr ┗━━━━━━━━━━━━━━━━━━»║ ARMv8 ║
║ … ║ ╚═══════╝
╙┄┄┄┄┄┄╜
Потому чтоэти объекты [потенциально] разбросаны, увеличение Core32
просто дает вам вздор.Это никогда не может быть гарантировано работать.Он будет работать только тогда, когда вызовы new
дали вам динамически размещенные объекты, смежные в памяти.
Вы должны просто использовать i
, чтобы выполнить итерацию массива, как вы уже делаете, или взятьуказатель aPtr
, который перебирает элементы массива, затем разыменовывается во второй раз, чтобы получить объект, на который указывает элемент .