gpt4 book ai didi

c - 为什么此 C 代码会产生双重释放或损坏?

转载 作者:行者123 更新时间:2023-12-02 08:23:23 24 4
gpt4 key购买 nike

<分区>

为什么这段计算两个 vector 内积的代码在编译时会产生双重自由或损坏错误:

ejspeiro@Eduardo-Alienware-14:~/Dropbox/HPC-Practices$ gcc --version
gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

代码来自this reference .

// Computation of the inner product of vectors aa and bb.

#include <stdio.h>
#include <stdlib.h>

int main() {

size_t nn = 100000000;
size_t total_mem_array = nn*sizeof(double);

double *aa;
double *bb;
double ss = 0.0;

aa = (double *) malloc(total_mem_array);
bb = (double *) malloc(total_mem_array);

int ii = 0;

for (ii = 0; ii < nn; ++ii) {
aa[ii] = 1.0;
bb[ii] = 1.0;
}

double sum1 = 0.0;
double sum2 = 0.0;

for (ii = 0; ii < nn/2 - 1; ++ii) {
sum1 += (*(aa + 0))*(*(bb + 0));
sum2 += (*(aa + 1))*(*(bb + 1));
aa += 2;
bb += 2;
}
ss = sum1 + sum2;

free(aa);
free(bb);

return 0;
}

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com