当我从 TCP 套接字读取时发生了多少内存副本
How many memory copies occur when I read from TCP socket
我的应用程序运行 read(sockfd, buffer, BUFFSIZE, 0)
。我知道内核需要在幕后做一些复制工作。栈上分配buffer
会发生多少次内存拷贝,堆上分配buffer
会不会变化?
谢谢。
不管buffer在heap还是stack上,内存拷贝数总是一样的。区别仅在于复制数据的内存位于何处。
在堆栈的情况下,你可以进入堆栈溢出,你的程序将有未定义的行为,而如果你在堆上这样做,如果你不释放内存,你可以进入内存泄漏需要它了
我的应用程序运行 read(sockfd, buffer, BUFFSIZE, 0)
。我知道内核需要在幕后做一些复制工作。栈上分配buffer
会发生多少次内存拷贝,堆上分配buffer
会不会变化?
谢谢。
不管buffer在heap还是stack上,内存拷贝数总是一样的。区别仅在于复制数据的内存位于何处。
在堆栈的情况下,你可以进入堆栈溢出,你的程序将有未定义的行为,而如果你在堆上这样做,如果你不释放内存,你可以进入内存泄漏需要它了