SO sorusunda [C++ işaretçisinin 2B dizisi nasıl ayrılır] [1], kabul edilen yanıt ayrıca söz konusu diziyi ayırma ve silme, "İçerilen işaretçileri, satır dizilerini ve sütun dizisini tümüyle ayrı ayrı ve doğru sırada silmeye dikkat edin." Bu yüzden, bu 2D dizisini hücresel otomat simülasyon programında başarıyla kullanıyorum. Bununla birlikte, bu dizinin bellek yönetimini doğru yapamıyorum. Yukarıdaki referanstan başka nasıl yapıldığına dair bir SO cevabı göremiyorum. AçıkçaC++ Nesneler için 2B işaretçi dizisi nasıl ayrılır ve silinir
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
matrix_0[i][j] = NULL;
}
}
delete [] matrix_0;
matrix_0 = NULL;
:
Object*** matrix_0 = new Object**[rows];
for (int i = 0; i < rows; i++) {
matrix_0[i] = new Object*[cols];
}
My nafile girişimi (ler) uygun bir şekilde de tahsis etme aşağıdaki gibidir yukarıdaki dizi (Valgrind göre) aşağıdaki gibidir:
I 2D dizi tahsis [1], [1] referans olarak satırları ve cols kısmını kaçırıyorum. Neyi kaçırdığımı gösterir misin? Şimdiden teşekkürler.
[1]: (2009 Kasım 20) How to allocate a 2D array of pointers in C++
'std :: vektör>> vector_of_objects;' –
SergeyA
2B dizi nesnelere veya 2B işaret dizisine mi dikkat çektiniz? –
@ R Sahu: Sınıf nesnelerini temel alan bir 2B işaret dizisi ve çeşitli hücresel otomatık türetilmiş nesnelerin polimorfik davranışından yararlanmak için bu şekilde ayarlanır. – Chris