Tak for begge svar. Jeg har løst problemet på følgende måde. Mit problem før var, at jeg rokerede rundt på rawMemoryPtr i mit program, således at den plads pointeren pegede på blev opdateret, men nu bruger jeg i stedet poolPtr til at rokere rundt på, så det skulle ikke give noget problem.
Jeg kan dog forstå på dig Arne, at hvis jeg f.eks. lavede en delete til en pointer, som jeg satte til at pege på rawMemoryPtr, så vil intet blive deallokeret noget? I er begge velkommen til at smide et svar.
Men i dit spørgsmål sætter du p til at pege på element nummer 50 og kalder så delete på den.
Det er undefined i C++, men jeg tror roligt at du kan regne med at der ikke en deallokering. Er du heldig sker der ingenting. Er du uheldig så trasher den hele dynamisk memory allokering.
C:\>type m1.cpp #include <iostream>
using namespace std;
const int N = 1000000;
int main() { cout << "new new new delete delete delete" << endl; int *a = new int[N]; cout << (int)a << endl; int *b = new int[N]; cout << (int)b << endl; int *c = new int[N]; cout << (int)c << endl; delete[] a; delete[] b; delete[] c; return 0; }
C:\>g++ m1.cpp -o m1.exe
C:\>m1 new new new delete delete delete 5242912 9306144 13369376
C:\>type m2.cpp #include <iostream>
using namespace std;
const int N = 1000000;
int main() { cout << "new delete new delete new delete" << endl; int *a = new int[N]; cout << (int)a << endl; delete[] a; int *b = new int[N]; cout << (int)b << endl; delete[] b; int *c = new int[N]; cout << (int)c << endl; delete[] c; return 0; }
C:\>g++ m2.cpp -o m2.exe
C:\>m2 new delete new delete new delete 5242912 5242912 5242912
C:\>type m3.cpp #include <iostream>
using namespace std;
const int N = 1000000;
int main() { cout << "new fakedelete new fakedelete new fakedelete" << endl; int *a = new int[N]; cout << (int)a << endl; int *aa = &a[1]; delete[] aa; int *b = new int[N]; cout << (int)b << endl; int *bb = &b[1]; delete[] bb; int *c = new int[N]; cout << (int)c << endl; int *cc = &c[1]; delete[] cc; return 0; }
C:\>g++ m3.cpp -o m3.exe
C:\>m3 new fakedelete new fakedelete new fakedelete 5242912 9306144 13369376
Endvidere:
m3 kører videre uden at deallokere - GNU, MS m3 crasher - Borland
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.