正确写法:
int *tmp = ( int * )malloc( H*W*sizeof(int) );
float *tmp = ( float * )malloc( H*W*sizeof(float) );
double *tmp = ( double * )malloc( H*W*sizeof(double) );
错误写法:
double *tmp = ( double * )malloc( H*W*sizeof(double * ) );
错误原因
在于字节数的表示不应该加 * 号。所有数据类型加了 * 号后,都变成4个字节
正常情况下,int 4字节;float 4字节;double 8字节。
之前用malloc申请一维动态数组,用到double型时总是程序崩溃,现在才知道是申请字节数出现问题。写成double*出错是因为字节数不对,内存不够用,其他数据类型都可以顺利使用是出于巧合。