我有一个代码,它会以指数方式增加内存的大小(由指针标识).
而不是realloc(),我使用malloc()其次memcpy()...
int size=5,newsize;
int *c = malloc(size*sizeof(int));
int *temp;
while(1)
{
newsize=2*size;
//begin time
temp=malloc(newsize*sizeof(int));
memcpy(temp,c,size*sizeof(int));
//end time
//print time in mili seconds
c=temp;
size=newsize;
}
Run Code Online (Sandbox Code Playgroud)
因此,复制的字节数呈指数增长.
此任务所需的时间也随着尺寸的增加而几乎呈线性增加.然而,在某一点之后,所花费的时间突然减少到非常小的值然后保持不变.
我记录了类似代码的时间,复制了我自己类型的数据.
5 -> 10 - 2 ms
10 -> 20 - 2 ms
.
.
2560 -> 5120 - 5 ms
.
.
20480 -> 40960 - 30 ms
40960 -> 91920 - 58 ms
367680 -> 735360 - 2 ms
735360 -> 1470720 - …Run Code Online (Sandbox Code Playgroud) 假设我
int *a,*b;
a= malloc(5*sizeof(int));
b= malloc(5*sizeof(int));
Run Code Online (Sandbox Code Playgroud)
然后分配值.
设a - 1,2,3,4,5b
- 6,7,8,9,10
有没有一种方法可以连接这些malloced数组而不需要进一步使用malloc,realloc或者memcpy?不是10个地方的大片!
我必须能够a[8]=9在执行后获得,而不需要移动数组的开销.
语言是C
我在 2 个系统之间连续执行 rsync,由于已知原因,tcp 连接被中断。在极少数情况下,整个 rsync 目标目录会被删除,并且数据会同步到其他位置。
使用的 rsync 选项是“-rpt -iP --stats --inplace”,我读到了有关 --inplace 与中断连接不一致的信息。
-rpt -iP --stats --inplace >> 失败
需要帮助提出最安全的方法,以避免在频繁连接中断的环境中出现 rsync 不一致