小编tss*_*tss的帖子

memcpy所花费的时间在某一点之后会减少

我有一个代码,它会以指数方式增加内存的大小(由指针标识).
而不是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)

c malloc memcpy

4
推荐指数
1
解决办法
623
查看次数

连接2个没有memcpy的数组

假设我

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

c dynamic-arrays

1
推荐指数
1
解决办法
357
查看次数

rsync with inplace 删除目录

我在 2 个系统之间连续执行 rsync,由于已知原因,tcp 连接被中断。在极少数情况下,整个 rsync 目标目录会被删除,并且数据会同步到其他位置。

使用的 rsync 选项是“-rpt -iP --stats --inplace”,我读到了有关 --inplace 与中断连接不一致的信息。

-rpt -iP --stats --inplace >> 失败

需要帮助提出最安全的方法,以避免在频繁连接中断的环境中出现 rsync 不一致

rsync file-transfer

1
推荐指数
1
解决办法
138
查看次数

标签 统计

c ×2

dynamic-arrays ×1

file-transfer ×1

malloc ×1

memcpy ×1

rsync ×1