소스 배열 (hist
)에 저장된 데이터의 계산을 사용하여 그레이 스케일 이미지 (image
)를 만드는 프로그램을 작성 중입니다. 소스 배열에 저장된 데이터는 이미지에 대한 calloc을 호출 한 후 0으로 재설정됩니다.calloc이 다른 변수의 메모리를 덮어 씁니까?
func1(){
float * hist = (float *) calloc(256, sizeof(float));
// operation to populate 'hist'
for...{
for...{
hist.....
}
}
hist2img(hist);
free(hist);
return 0;
}
hist2img(hist){
cout << "-> " << hist [4 * 250] << endl;
unsigned char * image = (unsigned char *) calloc(256 * 256, sizeof(unsigned char));
cout << "-> " << hist [4 * 250] << endl;
free(image);
return 0;
}
출력은 다음과 같습니다
-> 0.997291
-> 0
데이터에 어떻게됩니까? callbe 명령 다음에 hist
의 모든 요소는 0입니다. 나는 당신이 256 개 수레 할당 0
--(~$)--> gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609
--(~$)--> uname
Linux 4.7.2-040702-generic x86_64 x86_64 x86_64 GNU/Linux
'hist [4 * 250]'포인터 연산이 잘못되었습니다. – PRP