Skip to content

Commit afaaeb5

Browse files
author
shengjun.li
committed
Use realloc to simplify the code
Signed-off-by: shengjun.li <[email protected]>
1 parent 8a295df commit afaaeb5

File tree

1 file changed

+5
-11
lines changed

1 file changed

+5
-11
lines changed

hnswlib/hnswalg.h

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -573,29 +573,23 @@ namespace hnswlib {
573573
visited_list_pool_ = new VisitedListPool(1, new_max_elements);
574574

575575

576-
577576
element_levels_.resize(new_max_elements);
578577

579578
std::vector<std::mutex>(new_max_elements).swap(link_list_locks_);
580579

581580
// Reallocate base layer
582-
char * data_level0_memory_new = (char *) malloc(new_max_elements * size_data_per_element_);
581+
char * data_level0_memory_new = (char *) realloc(data_level0_memory_, new_max_elements * size_data_per_element_);
583582
if (data_level0_memory_new == nullptr)
584583
throw std::runtime_error("Not enough memory: resizeIndex failed to allocate base layer");
585-
memcpy(data_level0_memory_new, data_level0_memory_,cur_element_count * size_data_per_element_);
586-
free(data_level0_memory_);
587-
data_level0_memory_=data_level0_memory_new;
584+
data_level0_memory_ = data_level0_memory_new;
588585

589586
// Reallocate all other layers
590-
char ** linkLists_new = (char **) malloc(sizeof(void *) * new_max_elements);
587+
char ** linkLists_new = (char **) realloc(linkLists_, sizeof(void *) * new_max_elements);
591588
if (linkLists_new == nullptr)
592589
throw std::runtime_error("Not enough memory: resizeIndex failed to allocate other layers");
593-
memcpy(linkLists_new, linkLists_,cur_element_count * sizeof(void *));
594-
free(linkLists_);
595-
linkLists_=linkLists_new;
596-
597-
max_elements_=new_max_elements;
590+
linkLists_ = linkLists_new;
598591

592+
max_elements_ = new_max_elements;
599593
}
600594

601595
void saveIndex(const std::string &location) {

0 commit comments

Comments
 (0)