gpt4 book ai didi

c - 如何将指针变量移动指定字节数?

转载 作者:太空宇宙 更新时间:2023-11-04 03:28:07 24 4
gpt4 key购买 nike

在我的代码中,我被要求返回一个指向 heap_ptr 旧值的指针,并将 heap_ptr 移动 bytes_alloc 的数量。我已经将 heap_ptr 声明为 void *heap_ptrheap_ptr = mmap(NULL, 2*4096, ...) 为 heap_ptr 指定 8192 字节。我的问题是我不确定我是否正确地将 heap_ptr 移动了 2000 字节,因为 bytes_alloc 是 int 类型。我应该像 heap_ptr = (void *)((char *)heap_ptr + (char)bytes_alloc) 那样转换 bytes_alloc 吗?

这是我的功能:

void heap_alloc(int bytes_alloc) //bytes_alloc is 2000
{
void *temp_heap_ptr; //teporary pointer to my mmap heap_ptr

heap_ptr = (void *)((char *)heap_ptr + bytes_alloc) //this is where my question is

return (temp_heap_ptr);
}

最佳答案

指针算法移动所指向对象的大小。所以在表达式中:

(char *)heap_ptr + bytes_alloc

指针调整了那么多char,也就是说那个字节数,因为char被定义为1个字节。

bytes_alloc 本身的类型不影响计算。

注意,不需要转换为void *,有隐式转换。避免不必要的转换以使您的代码更易于阅读是一种很好的做法。

关于c - 如何将指针变量移动指定字节数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39651741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com