memmove是否将动态内存用于其临时数组

clm*_*mno 2 c memory

根据C11 N1570标准草案

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);
Run Code Online (Sandbox Code Playgroud)

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

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

Dav*_*rtz 6

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