2016-04-20 3 views

Antwort

0

Es ist nicht in Ordnung. Ihr Code stellt nicht sicher, dass m_A auf einen Speicherort zeigt, der mindestens 10 * sizeof(int) von reAlloc ist, so dass sich die Bereiche möglicherweise überlappen. Das bedeutet, dass Ihr Code undefined Verhalten verursacht.

Auch wenn Sie versucht haben, es mit memmove() zu beheben, sind Sie immer noch in der Grauzone, weil Sie nicht wissen, was bei *(m_A + 9) ist.

Könnten Ihre Daten sein, dann würde es funktionieren (mit memmove(), weil es immer noch reAlloc Daten sein könnte). Könnten nicht Ihre Daten sein, in diesem Fall erhalten Sie einige SIGSEGV.

memcpy() und memmove() sind Low-Level-Speichermanipulationsfunktionen, der Compiler erwartet, dass Sie wissen, was Sie tun, und keine Warnungen ausgibt.

+0

hmm .. okay, ich verstehe dann gibt es eine Lösung für dieses ??? irgendeine andere Operation ??? –

+0

Nun, nein. Wenn Sie 4 ganze Zahlen haben, warum sollten Sie 10 kopieren? Was erwarten Sie nach der Operation im 'reAlloc'-Array? Versuchen Sie zu beschreiben, was Sie tun möchten. –

Verwandte Themen