我在Linux和Python和C ++中编写了一个程序,我用脚本./run.sh
启动。我遇到了这样一个奇怪的现象:
首先,我编译了我的文件,然后执行./run.sh - >一切都很好
因此,为了不生成错误,我必须在运行之前重新编译代码。
错误是:munmap_chunk(): invalid pointer
我的代码如下:
float percentage = 0.0;
for (int i = 0; i < N_cubes; i++) {
float newPercentage = i * 100.0/N_cubes;
if ((newPercentage - percentage) >= 10.0) {
std::cout
<< "Computing Z_CFIE_near chunk. "
<< std::floor(newPercentage)
<< " % completed."
<< endl;
flush(std::cout);
percentage = newPercentage;
}
// computing the local arrays
int N_RWG_test, N_RWG_src, N_neighbors, N_nodes, S;
blitz::Array<int, 1> test_RWGsNumbers, src_RWGsNumbers;
blitz::Array<int, 1> neighbors_cubes;
blitz::Array<int, 2> localTestSrcRWGNumber_signedTriangles, localTestSrcRWGNumber_nodes;
blitz::Array<double, 2> nodesCoord;
blitz::Array<double, 1> rCubeCenter(3);
compute_cube_local_arrays(
N_RWG_test,
N_RWG_src,
N_neighbors,
N_nodes,
S,
test_RWGsNumbers,
src_RWGsNumbers,
neighbors_cubes,
localTestSrcRWGNumber_signedTriangles,
localTestSrcRWGNumber_nodes,
nodesCoord,
rCubeCenter,
allCubeIntArrays(i),
allCubeDoubleArrays(i));
// computing the Z_CFIE
blitz::Array<std::complex<double>, 2> Z_CFIE_J(N_RWG_test, N_RWG_src);
blitz::Array<std::complex<float>, 1> Z_CFIE_J_linear(N_RWG_test * N_RWG_src);
}
根据我的理解,导致此错误是因为在几次循环后无法释放Z_CFIE_J
和Z_CFIE_J_linear
(每次循环后将释放局部变量)。
你能帮我解决一下这个问题吗?