Skip to content

Commit 1d5bfe6

Browse files
Merge pull request torch-points3d#19 from nicolas-chaulet/humanpose1-ball_query_cpu_memory_leak
Fix conflitcs
2 parents f1479fe + ce3fc7b commit 1d5bfe6

File tree

3 files changed

+15
-21
lines changed

3 files changed

+15
-21
lines changed

cpu/include/cloud.h

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,31 +37,29 @@ struct PointCloud {
3737

3838
std::vector<PointXYZ> pts;
3939

40-
void set(std::vector<scalar_t> new_pts) {
41-
// pts = std::vector<PointXYZ>((PointXYZ*)new_pts,
42-
// (PointXYZ*)new_pts+new_pts.size()/3);
43-
std::vector<PointXYZ> temp(new_pts.size() / 3);
40+
void set(const std::vector<scalar_t>& new_pts) {
41+
pts.clear();
42+
pts.resize(new_pts.size()/3);
4443
for (unsigned int i = 0; i < new_pts.size(); i++) {
4544
if (i % 3 == 0) {
4645
PointXYZ point;
4746
point.x = new_pts[i];
4847
point.y = new_pts[i + 1];
4948
point.z = new_pts[i + 2];
50-
temp[i / 3] = point;
49+
pts[i / 3] = point;
5150
}
5251
}
53-
pts = temp;
5452
}
55-
void set_batch(std::vector<scalar_t> new_pts, int begin, int size) {
56-
std::vector<PointXYZ> temp(size);
53+
void set_batch(const std::vector<scalar_t>& new_pts, int begin, int size) {
54+
pts.clear();
55+
pts.resize(size);
5756
for (int i = 0; i < size; i++) {
5857
PointXYZ point;
5958
point.x = new_pts[3 * (begin + i)];
6059
point.y = new_pts[3 * (begin + i) + 1];
6160
point.z = new_pts[3 * (begin + i) + 2];
62-
temp[i] = point;
61+
pts[i] = point;
6362
}
64-
pts = temp;
6563
}
6664

6765
// Must return the number of data points

cpu/src/neighbors.cpp

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,7 @@ int nanoflann_neighbors(vector<scalar_t>& queries, vector<scalar_t>& supports,
4040
my_kd_tree_t;
4141

4242
// Pointer to trees
43-
my_kd_tree_t* index;
44-
index = new my_kd_tree_t(3, pcd, tree_params);
43+
std::unique_ptr<my_kd_tree_t> index(new my_kd_tree_t(3, pcd, tree_params));
4544
index->buildIndex();
4645
// Search neigbors indices
4746
// ***********************
@@ -156,11 +155,9 @@ int batch_nanoflann_neighbors(vector<scalar_t>& queries,
156155
PointCloud<scalar_t>, 3>
157156
my_kd_tree_t;
158157

159-
// Pointer to trees
160-
my_kd_tree_t* index;
161158
// Build KDTree for the first batch element
162-
current_cloud.set_batch(supports, s_batches[b], s_batches[b + 1]);
163-
index = new my_kd_tree_t(3, current_cloud, tree_params);
159+
current_cloud.set_batch(supports, s_batches[b], s_batches[b+1]);
160+
std::unique_ptr<my_kd_tree_t> index(new my_kd_tree_t(3, current_cloud, tree_params));
164161
index->buildIndex();
165162
// Search neigbors indices
166163
// ***********************
@@ -177,10 +174,9 @@ int batch_nanoflann_neighbors(vector<scalar_t>& queries,
177174
current_cloud.pts.clear();
178175
if (s_batches[b] < s_batches[b + 1])
179176
current_cloud.set_batch(supports, s_batches[b], s_batches[b + 1]);
180-
// Build KDTree of the current element of the batch
181-
delete index;
182177

183-
index = new my_kd_tree_t(3, current_cloud, tree_params);
178+
// Build KDTree of the current element of the batch
179+
index.reset(new my_kd_tree_t(3, current_cloud, tree_params));
184180
index->buildIndex();
185181
}
186182

@@ -233,7 +229,7 @@ int batch_nanoflann_neighbors(vector<scalar_t>& queries,
233229

234230
i0++;
235231
}
236-
delete index;
232+
index.reset();
237233
} else if (mode == 1) {
238234
int size = 0; // total number of edges
239235
for (auto& inds_dists : all_inds_dists) {

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444

4545
setup(
4646
name="torch_points",
47-
version="0.2.1",
47+
version="0.2.2",
4848
author="Nicolas Chaulet",
4949
packages=find_packages(),
5050
install_requires=requirements,

0 commit comments

Comments
 (0)