C++ 内存地址递增

标签 c++ sockets memory byte send

有没有办法让我获取内存地址并将其提前一定数量存储在变量中?该变量类型必须是什么?

例如,在下面的代码中,我想首先查看 data + 0,然后在之后的每个步骤中查看 data + sent。如果我没看错的话,sent 是以字节的形式存储的,而 data 是一个内存地址。

bool sendAll(int socket, const void *data, ssize_t size) {
    ssize_t sent = 0;
    ssize_t just_sent;
    while (sent < size) {
        just_sent = send(socket, data + sent, size - sent, 0);
        if (just_sent < 0) {
            return false;
        }
        sent += just_sent;
    }
    return true;
}

最佳答案

这就是 char* 的作用。指针数学,当指针的类型为 T* 时,始终以 sizeof (T) 为增量进行计算。根据定义,sizeof (char) == 1

所以尝试:

just_sent = send(socket, sent + (const char*)data, size - sent, 0);

关于C++ 内存地址递增,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13132659/

相关文章:

c++ - T* 与 char* 指针算法

c++ - WAV 文件的 MP3 编解码器

android - 在调用 Bitmap.recycle() 之后我应该信任垃圾收集器吗?

c# - 在 ASP.NET MVC 中为 View 初始化模型的不同方法

c - 字符串文字 : Where do they go?

c++ - delete[] 如何知道要删除多少内存?

.net - 如何设置amcap的默认色彩空间为YUY2?

Python多线程——主线程 block socket.connect

Python:非阻塞套接字或异步 I/O

windows - 无法将数据从环回地址发送到环回地址