Tag: 堆腐败

有没有办法标记一块分配的内存只读?

如果我使用malloc()分配一些内存,有没有办法只读标记它。 所以memcpy()失败,如果有人试图写入它? 这被连接到一个错误的APIdevise,用户无法使用由大型内存结构的一部分GetValue()方法返回的const指针。 由于我们要避免复制大量内存,因此我们将活动指针返回到特定格式的结构化内存中。 现在的问题是,有些用户发现通过直接写入这个内存到达那里工作的东西,避免SetValue()调用分配和正确地交付我们开发的内存二进制格式。 尽pipe在某些时候黑客可能会工作,但是由于控制标志的解释不正确而被用户覆盖,导致内存访问冲突。 教育用户是一项任务,但让我们说现在我们想要代码失败。 我只是想知道我们是否可以简单地防范这种情况。 对于比喻,假设有人从sqlite语句中获得一个blob列,然后回写给它。 虽然在sqlite的情况下,这是没有道理的,但在我们的情况有点happing。