问题标签 [void]
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.
c - void 指针和 ffcall 库
我正在使用 ffcall(特别是 ffcall 的 avcall 包)库将参数动态推送到可变参数函数。即我们有
我们想用从用户那里获取的值来调用这个函数。为此,我们创建了该函数的 avcall 版本:
现在,我使用 avcall 的函数是:
它是这样使用的:
但是我想使用 avcall 从这个函数中捕获一定数量的值,我事先并不知道这些信息。所以我想我只是创建一个 void 指针数组,然后根据类型创建 malloc 空间:
而且av_read_row
只是:
我遇到了一堆内存损坏错误,似乎它不喜欢我在这里做的事情。我无法发现我这样做的方式有什么问题,你可以吗?av_read_row
目前,当我尝试在while 循环中释放 malloc 时,它不喜欢它。谁能看到我做错了什么,如果有的话?
谢谢
c++ - 将 STL 字符串和 STL 向量转换为 void*?
我有一些 C++ 代码,我们用它来序列化任意数据并将其存储为一种特殊的图像格式作为元数据。
无论如何,它把它当作一个无效*。我可以做一个简单的memcpy吗?还是有更好的方法来做到这一点?
c - 泛型与类型安全?在 C 中使用 void*
我来自 OO(C#、Java、Scala),我非常重视代码重用和类型安全的原则。上述语言中的类型参数完成了这项工作,并启用了类型安全且不会“浪费”代码的通用数据结构。
当我陷入 C 中时,我意识到我必须做出妥协,我希望它是正确的。要么我的数据结构void *
在每个节点/元素中都有一个并且我失去了类型安全性,要么我必须为我想要使用它们的每种类型重新编写我的结构和代码。
代码的复杂性是一个明显的因素:遍历数组或链表是微不足道的,向*next
结构添加 a 也不是额外的努力;在这些情况下,不要尝试和重用结构和代码是有意义的。但对于更复杂的结构,答案并不那么明显。
还有模块化和可测试性:将类型及其操作从使用该结构的代码中分离出来,使测试变得更容易。反之亦然:在一个结构上测试一些代码的迭代,同时它试图做其他事情会变得混乱。
那么你的建议是什么?void *
和重用或类型安全和重复的代码?有什么一般原则吗?当它不适合时,我是否试图强制 OO 进入程序?
编辑:请不要推荐 C++,我的问题是关于 C 的!
f# - 与单位对比无效
我想了解这两个编程概念之间的区别。第一个表示没有数据类型,而后者表示类型存在但没有信息。此外,我认识到 Unit 来自函数式编程理论基础,但我仍然无法理解 unit 原语的可用性(例如,在 F# 程序中)。
void - 主要的 C/C++ 规范有哪些
在对“C/C++ 程序员”与未提及/现有的“C/C++ 语言”产生误解后,最终解决了这个问题,我决定将其作废。
我投票决定删除它,并计划将问题分成两部分(C 语言规范、编译器及其版本差异,以及 C++ 语言规范、编译器及其版本差异),但结果是一个带有(格式错误)答案的问题无法删除。
这对我的 SO 经验来说是一个很大的转折......无法重新定义一个错误关闭的错误回答的问题......哎呀。
c++ - C++/SDL 'void*' 不是点到对象类型
我是 C++ 新手,我正在尝试使用 C++ 和 SDL 进行一些测试,在 SDL 中我们有一个函数:
我可以为创建的计时器传递一个回调。但显然它将我的实例 this 转换为 *void 所以我无法在静态的更新方法上再次检索它,这很有趣,但 SDL_AddTime 不适用于非静态回调函数。
好吧,所以我的问题是,当尝试通过 void* param 参数调用公共方法渲染时,它抱怨不是指向对象类型的指针......
由于我无法控制 SDL_AddTime 函数并且必须传递所需的参数,因此有什么方法可以在 update 方法中再次获取 Character 实例?
谢谢
c# - C# lambda 表达式可以返回 void 吗?
我有以下方法,我想知道下面是否有任何可以放在 default(void) 的地方,因为有一个编译器错误表明 void 在这里无效:
我意识到我可以使用 if-else 语句而不是三元运算符(或者我可以调用一个虚拟方法来返回 void)。此外,Select 扩展方法不喜欢返回 void 的 lambda。似乎说无法推断类型,但当然如果我这样指定类型,要么:
从语言设计的角度来看,我很好奇,为什么我们没有可以返回 void 的表达式或 void 变量的数据类型。
c++ - 图像数据使用什么数据类型来避免 std:bad_alloc?
我正在开发一个成像库,我正在努力处理图像数据数据类型
由于图像可以具有可变数据类型(每像素 8 位,每像素 16 位),我想实现我的图像数据指针
但是 void* 会导致各种讨厌的事情,包括丑陋的指针算术,例如
我怀疑这有问题,因为当我将它传递给另一个方法时
新的回报std::bad_alloc
现在我必须同意 void* 不会直接导致 bad_alloc 但我很确定这里有问题。有什么提示吗?
编辑:
CImage 几乎没有
尺寸为 x:746, y:325
java - 返回布尔值而不是在 Java 中声明 void 类型?
是否有任何关于在方法签名中返回布尔值以指示成功操作而不是声明无效的硬性规则?我发现对于我的调用方法中更关键的操作,我想知道一个操作是否完成,以便我可以记录任何问题。这是对布尔值的“不当”使用吗?
c - C:返回 void 与从子函数返回双 *
我正在努力尝试加快 C 中的一些一般数据处理。我编写了几个形式的子例程:
我喜欢这种风格,因为它易于阅读和使用,但我通常将其称为:
如果我改为使用 void 子函数作为:
更新1:我在可执行文件上运行了 valgrind --leak-check=full ,使用第一种方法似乎没有内存泄漏。但是,可执行文件链接到包含我使用此表单创建的所有子例程的库,因此它可能无法捕获库中的泄漏。
我很好奇我将如何编写包装器来释放内存以及 ** 的真正作用,或者指向指针的指针是什么,所以我避免使用 ** 路由(也许我做到了错误,因为它没有在我的 Mac 上编译)。
这是一个当前的子程序:
根据我在这里得到的建议,听起来更好的方法是:
称呼: