void-pointers相关内容

void *字面上是float,如何转换?

所以我在我的C ++应用程序中使用这个C库,其中一个函数返回一个void *。现在我不是纯C的最尖锐的,但听说一个void *可以投射到几乎任何其他*类型。我也知道,我期望在这个函数的某个地方有一个浮点。 所以我将void *转换为float *,并解除引用float *,crash。 darn! 我调试代码,在gdb让它评估(float)voidPtr 和低,看看这个值是我期望和需要! ..
发布时间:2016-10-24 13:17:38 C/C++开发

将void *转换为std :: string

在浏览网页和搞乱自己后,我似乎无法将void *的目标(这是一个字符串)转换为std :: string。我尝试使用 sprintf(buffer,”%p“,*((int *)point)); .daniweb.com / forums / thread221261.html“>此页面获取C字符串,但无效。很遗憾,是的,我必须使用void *,因为这是SDL在USEREVENT结构中使用的。 ..
发布时间:2016-10-23 11:27:04 C/C++开发

释放void指针

如何释放void指针。 struct vStruct { void * vPtr; struct vStruct * next; }; struct vStruct sObj; struct vStruct * sObjNew = sObj; delete sObjNew-> vPtr; ----------->这是正确的方法删除void指针 delete s ..
发布时间:2016-10-21 00:13:35 C/C++开发

强制转换为void *并返回Original_Data_Type *

我已经看到和使用了很多次是C ++,特别是在各种线程实现。我不知道是否有任何陷阱/问题这样做?有没有办法,我们可以运行到一个错误或未定义的条件,当我们转换为void *,然后再回来?如果有任何问题,我们应该如何解决这些问题? 谢谢。 解决方案 $ b $ b 在将 void * 转换回特定类型时,您需要绝对确定,如果不这样,则最终得到未定义行为和潜在灾难。一旦您使用 void ..
发布时间:2016-10-20 23:51:23 C/C++开发

找出C ++ Void指针的类型

我有一个小问题:我怎么知道什么类型的C ++指针是? 我经常在我的控制台程序中使用一个小函数来收集输入,它看起来像这样: void query(string what-to-ask,[insert datatype here] * input) 我想使用void指针创建一个通用形式, ,所以我怎么知道它的类型,所以我可以施展它? 解决方案 以C ++编码,但. ..
发布时间:2016-10-19 20:35:21 C/C++开发

Union vs. static_cast(void *)

我正在编写代码,直到现在我正在使用这样的结构: struct s { enum类型{zero = 0,one,two}; unsigned int type; void * data; } 我需要一些通用结构来存储不同类的数据,我想使用它在std :: vector,所以这就是为什么我不能使用模板的原因。更好的选择:联合或void指针? Void指针只 ..
发布时间:2016-10-14 22:10:30 C/C++开发

多继承:从void *转换到第二个基类后的意外结果

我的程序需要使用void *为了在动态调用情况下传输数据或对象,以便它可以引用任意类型的数据,甚至是原始类型。但是,我最近发现,在具有多个基类的类中,下载这些void *的过程失败了,甚至在调用这些向下转换的指针上的方法之后,甚至崩溃了我的程序,即使内存地址看起来是正确的。 所以我创建了一个小测试用例,环境是Mac OS X上的gcc 4.2: class Shape { publ ..
发布时间:2016-10-14 20:33:32 C/C++开发

什么是“void *(*)(void *)”是什么意思在C ++?

这是 pthread_create()中的参数。我认为每个部分意味着: void * :返回值是一个void指针。 (*):这是一个指向函数的指针。 > 是否正确? 解决方案 Yes ,它是一个接受和返回 void * 的无名函数指针的签名。 如果它有一个名称(如在变量中),它将是: void *(* myFuncName)(void *) ..
发布时间:2016-10-13 11:45:28 C/C++开发

什么是C ++中的void指针?

可能重复: 我经常看到类似下面的代码: void * foo int bar); 这是什么意思?这是否意味着它可以返回任何 ?这类似于C#中的动态或对象吗? 解决方案 A void * 并不意味着什么。它是一个指针,但它指向的类型是未知的。 这不是它可以返回“任何东西”。返回 void * 的函数通常执行以下操作之一: 它正在处理未格式化的内存。这是 oper ..
发布时间:2016-10-13 10:58:35 C/C++开发

dynamic_cast from“void *”

根据 this , void * 没有RTTI信息,因此从 void * 投射是不合法的,是有意义的。 $ b b 如果我没记错, void * 正在使用gcc。 dynamic_cast 您可以澄清问题。 解决方案 dynamic_cast 只适用于多态类型,即包含虚函数的类。 在gcc中,您可以 dynamic_cast 到: void * 但不是来自: str ..
发布时间:2016-10-13 10:40:20 C/C++开发

错误:从“void *”转换为“int”失去精度

我有一个原型 void * myFcn(void * arg)的函数,它用作pthread的起始点。我需要将参数转换为一个int供以后使用: int x =(int)arg; 编译器(GCC版本4.2.4)返回错误: file.cpp:233:error:从'void *'转换为'int'失去精度 解决方案 可以将其转换为 intptr_t 类型 ..
发布时间:2016-10-11 22:29:53 C/C++开发

删除void指针是否安全?

假设我有以下代码: void * my_alloc(size_t size) { return new char [size]; } void my_free(void * ptr) { delete [] ptr; } 这样安全吗?或者必须在删除之前将 ptr 转换为 char * ? 解决方案 这取决于“安全”。它通常工作,因为信息与分配本 ..
发布时间:2016-10-11 20:33:44 C/C++开发