内存分配的疑问

剑南道刺史 2018-03-07 04:36:46
typedef struct//传输缓冲信息
{
OVERLAPPED overlapped;
WSABUF wsaBuf;
char buffer[BUF_SIZE];
int rwMode;
}PER_IO_DATA,*LPPER_IO_DATA;

LPPER_IO_DATA ioInfo;

ioInfo->wsaBuf.len = BUF_SIZE;
ioInfo->wsaBuf.buf = ioInfo->buffer;
ioInfo->rwMode = READ;
WSARecv(handleInfo->hClntSock,&(ioInfo->wsaBuf),1,&recvBytes,&flags,&(ioInfo->overlapped),NULL);


这是书上的例程,请问为什么要将 ioInfo->buffer的地址赋给ioInfo->wsaBuf.buf ,我感觉 ioInfo->buffer可有可无,代码中除此之外也没有再用到过 ioInfo->buffer。
...全文
536 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wallesyoyo 2018-03-08
  • 打赏
  • 举报
回复
对,应该是这样,他这样弄也是为了内存好管理。
引用 5 楼 u013861540 的回复:
[quote=引用 3 楼 wanggui2015 的回复:] 从你给的代码看,我猜测是WSARecv这个函数需要这样的结构体WSABUF接收数据,WSABUF里面的数据类型就是指针,所以把WSABUF和存储数据的buffer封装到一个结构体里了。 [quote=引用 2 楼 u013861540 的回复:] [quote=引用 1 楼 wanggui2015 的回复:] ioInfo->buffer 是存储数据的内存空间啊,ioInfo->wsaBuf.buf 仅是一个指针,指向了上面的内存空间。
这个我懂,但是这么做有什么意义吗[/quote][/quote] 哦,那么,如果不指向 ioInfo->buffer而是用malloc分配同样大小的空间也是可以的喽?[/quote]
剑南道刺史 2018-03-07
  • 打赏
  • 举报
回复
引用 3 楼 wanggui2015 的回复:
从你给的代码看,我猜测是WSARecv这个函数需要这样的结构体WSABUF接收数据,WSABUF里面的数据类型就是指针,所以把WSABUF和存储数据的buffer封装到一个结构体里了。 [quote=引用 2 楼 u013861540 的回复:] [quote=引用 1 楼 wanggui2015 的回复:] ioInfo->buffer 是存储数据的内存空间啊,ioInfo->wsaBuf.buf 仅是一个指针,指向了上面的内存空间。
这个我懂,但是这么做有什么意义吗[/quote][/quote] 哦,那么,如果不指向 ioInfo->buffer而是用malloc分配同样大小的空间也是可以的喽?
老马何以识途 2018-03-07
  • 打赏
  • 举报
回复
ioInfo->wsaBuf.buf是一個指針,而且它可能會指向其他地方,衹是在這裏它直接指向了ioInfo->buffer。另有一個可能性是ioInfo->wsaBuf.buf是歷史遺留的,爲了兼容性才給保留,但後來的代碼都直接指向了ioInfo->buffer。
wallesyoyo 2018-03-07
  • 打赏
  • 举报
回复
从你给的代码看,我猜测是WSARecv这个函数需要这样的结构体WSABUF接收数据,WSABUF里面的数据类型就是指针,所以把WSABUF和存储数据的buffer封装到一个结构体里了。
引用 2 楼 u013861540 的回复:
[quote=引用 1 楼 wanggui2015 的回复:] ioInfo->buffer 是存储数据的内存空间啊,ioInfo->wsaBuf.buf 仅是一个指针,指向了上面的内存空间。
这个我懂,但是这么做有什么意义吗[/quote]
剑南道刺史 2018-03-07
  • 打赏
  • 举报
回复
引用 1 楼 wanggui2015 的回复:
ioInfo->buffer 是存储数据的内存空间啊,ioInfo->wsaBuf.buf 仅是一个指针,指向了上面的内存空间。
这个我懂,但是这么做有什么意义吗
wallesyoyo 2018-03-07
  • 打赏
  • 举报
回复
ioInfo->buffer 是存储数据的内存空间啊,ioInfo->wsaBuf.buf 仅是一个指针,指向了上面的内存空间。

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧