问题标签 [unsafe]

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 回答
790 浏览

c# - 当在非托管结构上使用时,固定语句的开销是多少?

特别是,我正在考虑这样的场景:

假设 Foo 存储在非托管内存中,我试图弄清楚在评估 GetMyAddr 中的固定语句所涉及的内容。作为程序员,我知道这个结构永远不在托管堆上,我只需要以最有效的方式在非托管内存中获取它的地址。我特别担心这里是否使用了任何锁定或原子操作,因为这会使其完全不合适。

0 投票
3 回答
1500 浏览

c# - 关于是否使用带有不安全代码和stackalloc的fixed的困惑

我在下面有一段代码,其中一行注释掉了。该CreateArray方法中发生的事情与注释掉的行所做的事情相同。我的问题是为什么它在该行b->ArrayItems = d未注释时起作用,但在注释掉时返回垃圾?我认为我不必“修复”任何东西,因为所有信息都是不受管理的。这个假设不正确吗?

0 投票
1 回答
432 浏览

c# - 不安全的 C# - 在最低内存地址实例化指针并覆盖

是否可以在任何给定的内存地址(哪个是最低的?)使用(不安全的)C# 实例化一个指针,然后简单地开始用连续的随机数据覆盖内存,直到 PC 崩溃?

有人可以给我一个例子吗?

0 投票
1 回答
248 浏览

c# - 函数 C++ 到 C#(安全代码)

C++:

C#: ?

0 投票
2 回答
930 浏览

c# - 除非为 x86 平台构建,否则不安全的 c# 代码会导致 64 位平台上的堆损坏

我有一个简单的实用程序,它使用一些不安全的代码来获取文件版本信息。当我将其编译为混合平台(vs2008/.net 3.5)并部署到 64 位机器时,我得到一个堆损坏错误。如果我重新编译为 x86,那么一切正常......

由于我对 .NET 通用类型系统的理解,这令人惊讶。我的不安全代码使用指向短的指针和指向字节的指针。由于 CTS,这些常见类型在任何平台上的大小都相同吗?我在这里想念什么

感谢所有僵尸的杀手,等待僵尸启示录...... -乔纳森

0 投票
3 回答
437 浏览

c# - 我应该在 MMORPG 模拟器中使用指针吗?

我有一个 MMORPG 模拟器,这意味着它将处理相当多的数据包。目前,我正在为此使用指针,因为我认为正确使用它们可以加速我的服务器,但是我有两个朋友,一个告诉我使用指针,他认为我可以使用它们而不会遇到麻烦,我的其他朋友说我不应该使用指针,因为它们会使我的服务器崩溃,它们不安全,而且它们不容易管理。

我将结构用于我的数据包结构,因此例如我可以使用以下行获取它的类型: Ptr->Type;

你怎么看?

0 投票
1 回答
1888 浏览

c# - 在 C# 中初始化 byte* 的集合

我的 unsafe 方法接受一个集合byte[]。所有这些byte[]s 的大小都相同。

我需要遍历它们,寻找某些模式。搜索本质上是重新解释转换样式:在每个偏移量处,我需要考虑一个值,就好像它是一个浮点数、一个双精度数、一个短整数、一个整数等。因此,byte*为每个输入获取一个byte[]并在每次迭代时递增它似乎就像一个自然的方法。

不幸的是,我找不到任何方法来创建byte*- 或者更具体地说,从数组集合中初始化它。有任何想法吗?

这是该任务的一个有些人为的版本:

本质上,问题是如何pointers使用 的地址进行初始化arrays,同时固定数组以使 GC 不会移动它们。

0 投票
4 回答
4381 浏览

c# - 将 System.Decimal 转换为 System.Guid

我有一个大字典,其中的键是十进制,但是 System.Decimal 的 GetHashCode() 非常糟糕。为了证明我的猜测,我运行了一个包含 100.000 个相邻小数的 for 循环并检查了分布。100.000 个不同的十进制数字只使用了 2 个(两个!!!)不同的哈希码。

十进制表示为 16 个字节。就像吉德一样!但是 Guid 的 GetHashCode() 分布非常好。如何尽可能便宜地将小数转换为 C# 中的 Guid? 不安全的代码是可以的!


编辑:要求测试,所以这里是代码:

这会打印 7。我不记得给我 2 的起始小数。

0 投票
3 回答
2962 浏览

multithreading - Perl 线程和不安全信号

所以我最近想线程化我的一个 Perl 程序来提高它的速度。获取网站列表,我想为每个 url 启动一个线程并获取每个网站的内容,然后在页面上查找公司描述。一旦一个线程找到结果,或者所有线程都没有,我想退出,写下我的结果,然后读入我下一家公司的网址。

我看到的问题是我在创建线程时调用的函数内部使用了 Perl::Unsafe::Signals 模块。我需要不安全的信号来中断“卡住”的正则表达式。然而,这似乎会导致各种问题,主要是程序崩溃和错误消息“闹钟”显示。

因此,有没有办法安全地使用 Perl::Unsafe::Signals 和线程?有没有办法通过向函数发送信号来以另一种方式使正则表达式超时(就像我在下面发送“KILL”信号?)谢谢。

注意:我将代码剥离到所有相关部分,如果您需要更多,请告诉我。

#######线程创建调用的子程序
0 投票
1 回答
544 浏览

c# - 将字节数组重新解释为结构数组

我有一个字节数组,我想将它重新解释为一个 blittable 结构数组,最好不要复制。使用不安全的代码很好。我知道字节数,以及我想在最后得到的结构数。