[問題] 指標指定給指標問題
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2010
問題(Question):
我將A指標的資料直接指定給B指標
但是在free時,卻出現堆積損毀
程式碼(Code):(請善用置底文網頁, 記得排版)
以下是部分程式碼
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
void map(double *A);
int main(){
double *A,*B;
int i;
A=(double *)malloc(sizeof(*A)*32);
for(i=0;i<32;i++)
*(A+i)=i;
map(A);
free(A); //這邊在free時會損毀
return 0;
}
void map(double *A){
int i;
double *B;
B=(double *)malloc(sizeof(*B)*32);
B=A; //這種寫法有問題
//如果改成以下這樣就不會有問題了
for(i=0;i<32;i++)
*(B+i)=*(A+i);
free(B);
}
我想問一下,為什麼不能直接address mapping?
而要每個值指定呢?
先謝謝了...
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.78.140
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1405013610.A.D70.html
※ 編輯: jacky1989 (118.233.78.140), 07/11/2014 01:34:20
→
07/11 01:38, , 1F
07/11 01:38, 1F
我知道阿~但是理論上複製位址應該內容也會相同不是?
而且就算內容不會複製,又怎麼會堆積損毀呢??
※ 編輯: jacky1989 (118.233.78.140), 07/11/2014 01:40:59
→
07/11 01:43, , 2F
07/11 01:43, 2F
→
07/11 01:44, , 3F
07/11 01:44, 3F
→
07/11 01:44, , 4F
07/11 01:44, 4F
→
07/11 01:44, , 5F
07/11 01:44, 5F
→
07/11 01:44, , 6F
07/11 01:44, 6F
了解了,感謝各位的指教,我指標學的還不夠好.....Orz
※ 編輯: jacky1989 (118.233.78.140), 07/11/2014 01:45:39
推
07/11 02:13, , 7F
07/11 02:13, 7F
→
07/11 02:13, , 8F
07/11 02:13, 8F
→
07/11 02:14, , 9F
07/11 02:14, 9F
神回覆~~
※ 編輯: jacky1989 (140.136.146.114), 07/11/2014 16:03:34