写入连续内存的地址

时间:2013-11-16 00:16:03

标签: c arrays memory fread

假设我有一个大小为N的数组,每个X字节长。 例如,设N = X = 2.

int *iArray = calloc(N, X)

所以通过这个调用我现在有一个4字节的连续数组。

如果我尝试将索引0 (iArray + 0)写入4字节长的数据怎么办?我应该期望一半的信息是在索引0而另一半是写入索引1吗?当然,这将是一个错误,可能会在编译时被编译器捕获,但我的期望是否正确?


我问,因为我实际上有类似的情况。

我有一个如上所述动态分配的连续元素数组。填充此数组所需的方法是调用:

fread(void * ptr, size_t size, size_t count, FILE * stream)

此函数定义为获取指向内存块的指针,其中分配的空间等于或大于count*size个字节。我正在读取的文件是二进制格式,顺序存储整数。 fread()是否无偏见,因为它将count*size字节从文件中读入到ptr的内存空间指针中,或者还有其他需要考虑的因素我没有看到?

请拨电话: fread(ptr, sizeof(int), 99999, FILEptr)

足够假设ptr指向足够空间的内存块?

我目前无法测试这是否有效,但似乎有直觉意义。我还想澄清一下我对这些主题的理解。

0 个答案:

没有答案