根据C11 N1570 standard draft:

7.24.2.2“memmove函数”:

memmove函数将n字符从s2指向的对象复制到s1指向的对象。进行进行复制,就好像首先将n所指向的对象中的s2字符复制到n字符的临时数组中一样,该数组不与s1s2所指向的对象重叠,然后将临时数组中的n字符复制到s1指向的对象中

因此,如果我选择使用(file_size = 32K)移动大小为32K的缓冲区

memmove(io_Buffer, io_Buffer+17, file_size);

临时缓冲区的大小不是32K吗?

问题

程序可以自行分配动态内存吗?它会在那一行分配和释放内存吗?

最佳答案

我认为您错过了该句子中的“好像”。这意味着效果将与执行此操作相同,而不是实际上执行该操作。我从未见过实际使用临时数组的memmove实现。

关于c - memmove是否将动态内存用于其临时数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55370165/

10-09 09:03