问题标签 [void-pointers]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
1409 浏览

c - 链表包含其他链表 & 免费

我有一个通用的链表实现,它的节点结构包含一个 void* 到数据和一个列表结构,它包含对 head 的引用。现在这是我的问题,链表中的节点可能通过其 void* 持有对另一个链表的引用。当我释放包含较小列表的较大列表时,这会导致内存泄漏。所以我想知道有没有办法检查 void* 是否指向另一个列表,所以我跟随并释放它或者只是数据。

如果我在我的结构的开头添加一个键,我可以通过取消引用 void* 来检查它并找出它是一个列表?

编辑:调用者不插入他们由我的函数插入的较小列表我不希望调用者只处理他们持有指针的列表。

0 投票
3 回答
8239 浏览

c - 在 C 中将 const 分配给非 const

在下面的:

我得到:

警告:赋值从指针目标类型中丢弃限定符


我知道我可以使用

解决它,但我必须问:有没有其他选择?

通过使用const void * const我假装说不会对输入进行任何更改。而且,现在我想起来,const void *就足够了,不是吗?(因为我无法更改指针以影响调用者)

感谢您花时间阅读。

0 投票
3 回答
10444 浏览

c++ - 通过引用传递 void*

为什么我不能通过void*引用传递?编译器允许我声明一个具有以下签名的函数:

但是当我尝试调用它时,我收到以下错误:

铸造它void*也不起作用

另外,有什么解决办法吗?

0 投票
3 回答
205 浏览

c - 这个 void 指针是怎么回事?

这是来自 Make Controller 固件的一些 C 代码。我很熟悉 void 指针是什么,但我从未见过像这个函数的第一行这样的语法。这样做究竟是为了什么?

0 投票
1 回答
2336 浏览

c - 内核设备驱动程序“取消引用'void *'指针

我正在学习如何为 linux 编写设备驱动程序,并且我有一个关于使用通用数据结构的问题。

我有一个任务,我有完整的功能......所以我不要求你做我的家庭作业......

此分配要求设备能够将元素从 fifo 缓冲区中入队和出队。我使缓冲区“通用”,以便可以使用任何元素大小(并在运行时指定)。源码在下面(注意这不是内核版本,但错误是一样的)...内核版本需要kmalloc,copy_to/from_user()等...

当我将它编译成内核模块时,我收到警告:

kringbuf_generic.c:53: warning: dereferencing ‘void *’ pointer kringbuf_generic.c:72: warning: dereferencing ‘void *’ pointer

错误发生在putring中(在memcpy中)

在 getring 中,在 memcpy() 函数中

显然,由于这是一个内核模块,所以不知道谁会使用它,并且固定缓冲区元素大小将限制此缓冲区的使用。

有没有办法摆脱警告?还是在开发此类代码时我应该做一些不同的基本事情?

0 投票
5 回答
3221 浏览

c++ - 取消引用时如何将 void 指针转换为指针?

我有一个指向 int 指针的 void 指针。当我想取消引用时,正确转换 void 指针的语法是什么?上面的代码退出:

谢谢!

0 投票
2 回答
2271 浏览

c - 如何通过 C 中的套接字发送和接收内存地址?

我想通过 C 中的套接字发送/接收内存地址。我拥有的是以下内容:

我知道打印指针地址的方法printf是使用%p,即

但这会打印例如 0x0021ef1a。我想要的只是以下内容:0021ef1a

而在接收方:如何将接收到的字节转换回 a void*

啊:代码应该适用于 32 位以及 64 位系统;)此外,代码应该使用 -Wall -Werror 编译....呵呵

感谢您的帮助!祝你周末愉快,乔纳斯

0 投票
1 回答
1852 浏览

c++ - C++ 中带 void 指针的算术运算

我需要访问由 void 指针指向的缓冲区中的对象。该对象位于某个偏移量,但由于禁止对 void 指针进行算术运算,我该如何访问该对象?

0 投票
4 回答
2607 浏览

c++ - c/c++中空指针的使用

嘿,我想知道在使软件更安全、更灵活方面,如何在现实世界中应用 void 指针。例如,我知道 void 指针,它将投射到的指针隐藏在外部,这将使软件更加安全。还有其他原因为什么您会使用 void 指针?

0 投票
2 回答
471 浏览

c - 在结构中使用什么级别的间接?

我想创建一个简单的结构来保存类型标识符int和任何类型的值。我应该使用

或者

或者是其他东西?