[問題] free掉malloc要的空間卻還是能讀取
各位大大好小弟是剛學程式不久的小魯
最近在跑一支程式的時候,該程式的某個函數用malloc要了1000個double變數的空間
但是free掉指標之後還是可以讀取裡面的內容
請各位大大指點迷津> <
程式碼如下
double find_k(int n, double eta)
{
int i, size=1000, ibest;
double lower, upper, al, g1, g2, step;
double y, ybest;
double *y;
lower = 0.;
upper = 1.-eta;
step = (upper-lower)/size;
y = (double *) malloc(size*sizeof(double));
for (i=1; i < size; i++) {
al = lower+step*i;
g1 =functionA(...);
g2 =functionB(...);
y = g2-g1;
y[i] = y;
}
ybest = 1000000.;
ibest = 1;
for (i=1; i < size; i++) {
if (y[i]< ybest) {
ybest = y[i];
ibest = i;
}
}
free(y);
printf("!!y[99]=%lf\n",y[99]);<<<<<<
al = lower+(double)ibest*step;
return al;
}
小弟的執行環境是win7 用的是dev C++;
如題目所說,用窮舉的方式找出最小的y之後,將指向1000個變數空間的y給free掉
照理來講printf("!!y[99]=%lf\n",y[99])這行敘述應該是跑不出東西的,
請各位大大幫小弟指點迷津@@
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.115.88.186
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1482780572.A.1FF.html
→
12/27 03:32, , 1F
12/27 03:32, 1F
→
12/27 03:32, , 2F
12/27 03:32, 2F
→
12/27 07:31, , 3F
12/27 07:31, 3F
→
12/27 10:34, , 4F
12/27 10:34, 4F
→
12/27 10:35, , 5F
12/27 10:35, 5F
→
12/27 11:00, , 6F
12/27 11:00, 6F
→
12/27 11:15, , 7F
12/27 11:15, 7F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章