2016-04-20 3 views

Répondre

0

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.

+0

hmm .. okay je comprends alors y at-il une solution à cela ??? toute autre opération ??? –

+0

Eh bien, non. Si vous avez 4 entiers, pourquoi voudriez-vous en copier 10? Que comptez-vous avoir dans le tableau 'reAlloc' après l'opération? Essayez de décrire ce que vous voulez faire. –