我只是curoius是什么是重新分配内存的最简单方法? 在我的教员中,我们使用此代码重新分配内存(示例):
if (dat = fopen(argv[1], "rb")) {
do {
p = fread(&art, sizeof(ARTIKAL), 1, dat);
if (p) {
if (n == c) niz = (ARTIKAL *)realloc(niz, (c *= 2) * sizeof(ARTIKAL));
niz[n++] = art;
}
} while (p);
fclose(dat);
我正在考虑使用倒带功能,但我不能100%确定如何实现它。
答案 0 :(得分:1)
为什么在此示例中需要rewind()
函数?
你的例子似乎很好,有一件事可以改进:
if (dat = fopen(argv[1], "rb")) {
do {
p = fread(&art, sizeof(ARTIKAL), 1, dat);
if (p) {
if (n == c)
{
ARTIKAL *tmp = (ARTIKAL *)realloc(niz, (c *= 2) * sizeof(ARTIKAL));
if (tmp == NULL)
{
printf("Not enough memory!\n")
return 0;
}
else
{
niz = tmp;
}
niz[n++] = art;
}
} while (p);
fclose(dat);
购买上面的代码,您的代码更安全,因为realloc
在分配空间失败时返回NULL
,然后您丢失数据。