C'est pas okay. Votre code ne garantit pas que m_A
pointe vers un emplacement de mémoire qui est au moins 10 * sizeof(int)
de reAlloc
, de sorte que les zones peuvent se chevaucher. Cela signifie que votre code provoque undefined behavior.
Même si vous avez essayé de le réparer en utilisant memmove()
, vous êtes toujours dans la zone grise, car vous ne savez pas ce qui est à *(m_A + 9)
.
Peut-être vos données, alors cela fonctionnerait (avec memmove()
, car il pourrait encore être des données de reAlloc
). Peut-être que ce ne sont pas vos données, auquel cas vous obtiendrez du SIGSEGV.
memcpy()
et sont des fonctions de manipulation de mémoire de bas niveau, le compilateur s'attend à ce que vous sachiez ce que vous faites et n'émette pas d'avertissement.
Comportement indéfini. Tout peut arriver. – gnasher729