unw_word_t sp = xbt_dynar_get_as(st->stack_frames, 0, mc_stack_frame_t)->sp;
xbt_dynar_push(res, &st);
- (*snapshot)->stack_sizes = (size_t*)
- xbt_realloc((*snapshot)->stack_sizes, (cursor + 1) * sizeof(size_t));
- (*snapshot)->stack_sizes[cursor] =
+ size_t stack_size =
(char*) current_stack->address + current_stack->size - (char*) sp;
+ (*snapshot)->stack_sizes.push_back(stack_size);
}
return res;
snapshot_regions_count(0),
enabled_processes(),
privatization_index(0),
- stack_sizes(nullptr),
+ stack_sizes(),
stacks(nullptr),
to_ignore(nullptr),
hash(0),
delete this->snapshot_regions[i];
}
xbt_free(this->snapshot_regions);
- xbt_free(this->stack_sizes);
xbt_dynar_free(&(this->stacks));
xbt_dynar_free(&(this->to_ignore));
xbt_dynar_free(&this->ignored_data);
#include <sys/types.h> // off_t
#include <stdint.h> // size_t
+#include <vector>
#include <set>
#include <simgrid_config.h>
size_t snapshot_regions_count;
std::set<pid_t> enabled_processes;
int privatization_index;
- size_t *stack_sizes;
+ std::vector<size_t> stack_sizes;
xbt_dynar_t stacks;
xbt_dynar_t to_ignore;
uint64_t hash;