Im weitesten Sinne..
RAII ist eine Technik, um solche Probleme zu umgehen, dass vergessen geht, dass man noch eine Ressource schliessen muss. (siehe Wikipedia Artikel)
Es geht darum, dass, wenn du ein automatisches Objekt erstellst (also kein new, oder malloc), dass das automatisch zerstört wird, sobald der Scope (Sichtbarkeitsraum der Variable) verlassen wird und der Destruktor aufgerufen wird. Somit kannst du im Destruktor die Ressource wieder freigeben, ohne das jedes mal dran denken zu müssen. (Also Release aufrufen).
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
class myVertexBuffer
{
public:
myVertexBuffer (...)
{
device->CreateVertexBuffer (...);
}
~myVertexBuffer (...)
{
vb->Release ();
}
private:
PDIRECT3DVERTEXBUFFER9 vb;
};
....
{
myVertexBuffer mvb (...);
} //mvb wird automatisch zerstört und im Destruktor das Objekt freigegeben
|
Das kann man natürlich noch viel generischer gestalten, aber das überlasse ich mal dir.
Aber der Vorteil sollte klar sein. Wenn du da jetzt ein myVertexBuffer Objekt benutzt, dann musst du dich nicht um die Freigabe kümmern, respektive nicht immer dran denken release aufzurufen. (Zusätzlich lässt sich das ganze auch sehr schön mit AddRef zusammen benutzen).