| 184 | } |
| 185 | |
| 186 | Space::~Space(void) { |
| 187 | // Mark space as failed |
| 188 | fail(); |
| 189 | // Delete actors that must be deleted |
| 190 | { |
| 191 | Actor** a = d_fst; |
| 192 | Actor** e = d_cur; |
| 193 | // So that d_unforce knows that deletion is in progress |
| 194 | d_fst = nullptr; |
| 195 | while (a < e) { |
| 196 | // Ignore entries for tracers |
| 197 | if (!Support::marked(*a)) |
| 198 | (void) (*a)->dispose(*this); |
| 199 | a++; |
| 200 | } |
| 201 | } |
| 202 | #ifdef GECODE_HAS_VAR_DISPOSE |
| 203 | // Delete variables that were registered for disposal |
| 204 | for (int i=0; i<AllVarConf::idx_d; i++) |
| 205 | if (_vars_d[i] != nullptr) |
| 206 | vd[i]->dispose(*this, _vars_d[i]); |
| 207 | #endif |
| 208 | // Release memory from memory manager |
| 209 | mm.release(ssd.data().sm); |
| 210 | } |
| 211 | |
| 212 | |
| 213 | |