使用malloc和calloc创建动态数组时遇到问题 .
int main() {
float *xd_real_send;
int Nooflines_Real;
int *X;
float test[500];
Nooflines_Real = count_lines(infile);
printf("Nooflines_Real: %d\n", Nooflines_Real);
X = (int *) malloc(Nooflines_Real*sizeof(int));
xd_real_send = (float *) calloc (Nooflines_Real,sizeof(float));
printf("size of X %d, test %d and size of xd_real_send %d\n",
sizeof(X)/sizeof(int),sizeof(test)/sizeof(float),
sizeof(xd_real_send)/sizeof(float));fflush(stdout);
}
输出是
Nooflines_Real: 40
size of X 2, test 500 and size of xd_real_send 2
你能告诉我我做错了什么吗?
1 回答
X
和xd_real_send
被定义为指针 .应用的
sizeof
运算符返回指针使用的内存量,而不是指针引用的内存大小 .一旦动态分配并由某个指针引用,就不可能(以任何可移植的方式)请求内存块的大小 .
对于动态分配的内存,应用程序需要注意跟踪这些内存块的大小 .
test
明确定义为数组,因此sizeof
能够确定数组的大小 .