假设我有一个大小为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
指向足够空间的内存块?
我目前无法测试这是否有效,但似乎有直觉意义。我还想澄清一下我对这些主题的理解。