I reckon the delete statements should take place end of that function where I put in the new statements. The reason why I didn't put in delete statements is that I didn't author the original function and don't know its functionality. I was merely interested in fixing a broken Windows build.
Currently the Windows build is broken again due to yesterdays introduction of libtiff in the base components. Once I've sorted that out I'm happy tentatively to put in the aforementioned delete statements unless someone else beats me.
Rob
On 11/04/2017 20:39, Nicholas Sauter wrote:
Rob,Just as a general thing, "new" statements in C++ need to be paired with "delete" statements (delete pk, delete a_sum, and delete akml). Unless this is done there will be a memory leak.Nick
Nicholas K. Sauter, Ph. D.
Senior Scientist, Molecular Biophysics & Integrated Bioimaging DivisionLawrence Berkeley National Laboratory
1 Cyclotron Rd., Bldg. 33R0345
Berkeley, CA 94720
(510) 486-5713
On Tue, Apr 11, 2017 at 3:31 AM, CCTBX Commit via DLS Jenkins <[email protected]> wrote:
Repository : ssh://g18-sc-serv-04.diamond.ac.uk/cctbx
On branch : master
commit a31eb2bf0d5bb129425bb759466f45622c773fd4
Author: Robert Oeffner <[email protected]>
Date: Tue Apr 11 11:31:24 2017 +0100
Replacing illegal C++ code with proper dynamic array allocation.
a31eb2bf0d5bb129425bb759466f45622c773fd4
scitbx/lbfgs.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/scitbx/lbfgs.h b/scitbx/lbfgs.h
index 41be8e8cc..f0000143d 100755
--- a/scitbx/lbfgs.h
+++ b/scitbx/lbfgs.h
@@ -917,9 +917,9 @@ namespace lbfgs {
int info = 5;
brackt = false;
FloatType sxnorm = std::sqrt(ddot(SizeType(n), sx, sx));
- FloatType pk[n];
- FloatType a_sum[n];
- FloatType akm1[n];
+ FloatType* pk = new FloatType[n];
+ FloatType* a_sum = new FloatType[n];
+ FloatType* akm1 = new FloatType[n];
for (SizeType i=0; i < n; i++) {
pk[i] = sx[i]/sxnorm;
akm1[i] = -gx[i]/sxnorm;