我有一个double类型的指针,该指针使用malloc指向分配的内存,其中我在数组中分配了12个元素:
double *y = (double*)malloc(sizeof(double) * 12);
我的问题如下。假设我以这种方式分配了内存:
double *y2 = (double*)malloc(sizeof(double*) * 12);
将*加到括号大小的两倍中会产生什么区别?这样的改变有什么意义?我是在计算要加倍的指针的大小而不是加倍的大小吗?我问这样一个问题,因为当我来计算y2 [0]的fab并说y2 [0]等于-0.02时,答案将变为0.00,而当我计算y1 [0]和y1 [ 0]等于-0.02,答案是0.02。
答案 0 :(得分:0)
sizeof (double)
对于double
值数组的元素大小是正确的。对于sizeof (double *)
的 pointers 指针数组,double
是正确的值。
在大多数64位体系结构上,sizeof (double)
和sizeof (double *)
都恰好是8,但是在大多数32位体系结构上,sizeof (double)
是8,而sizeof (double *)
是4,所以有所不同。
如果您使用sizeof (double *)
获得不同的结果,则可能是因为您的分配太小,并且您遇到了堆缓冲区溢出和内存损坏的情况。