malloc申请1D动态数组的错误
发布时间
阅读量:
阅读量
正确写法:
int tmp = ( int * )malloc( HW*sizeof(int) );
float tmp = ( float * )malloc( HW*sizeof(float) );
double tmp = ( double * )malloc( HW*sizeof(double) );
错误写法:
double tmp = ( double * )malloc( HW*sizeof(double * ) );
错误原因
主要体现在对字节数的表达方式存在误操作,不应在数据类型后添加 * 号。一旦在类型后加上 * 号,系统将默认该类型占用4个字节。
通常情况下,int 类型占据4个字节;float 类型同样为4个字节;而 double 类型则需要8个字节。
此前在使用 malloc 函数申请一维动态数组时,当涉及 double 类型时程序频繁出现崩溃现象,直到现在才意识到问题出在内存分配的字节数计算上。将 double* 作为参数传递给 sizeof 函数导致分配的内存空间不足,从而引发错误。而其他数据类型能够正常使用则是偶然因素所致。
全部评论 (0)
还没有任何评论哟~
