草庐IT

memory-mapping

全部标签

windows - 如何在 Windows 中的进程之间传输敏感数据?

我想将用户名和密码信息从一个进程传输到在Windows中同一服务器上运行的另一个进程。以安全方式实现此传输的最佳方法是什么?一种简单的方法是将密码复制到一个文件,然后让另一个进程从文件中读取,然后在读取后删除该文件。虽然这很简单,但我担心它是否安全,因为即使它只存在很短的时间,某人仍然有可能获得对该文件的访问权限,并且如果另一个文件也有可能被遗漏处理错误或崩溃。像套接字和命名管道这样的IPC似乎是解决这个问题的过度杀伤力。我更倾向于使用内存映射文件,如以下链接中所述,该链接讨论了跨进程共享内存。这是正确的方法吗?此外,在释放/删除之前用虚拟数据填充内存以防止恶意进程从该内存位置清除数据

c - 如何: Safeguard memory - strncat()?

function(char*a,char*b){charnewStr[100];strncpy(newStr,a,sizeof(newStr));//Line1-copynomorethan100bytesstrncat(newStr,b,(sizeof(newStr)-strlen(newStr)));//Line2-?newStr[99]=NULL;//Line3-nullterminatestring}第2行:正确指定100bytes减去从a复制过来的内容的strlen以确保我不会复制超过100个字节?谢谢。 最佳答案 str

windows - windows平台有pdb文件,为什么还要map文件?

如标题所述,我认为pdb文件是map文件的超集。我问这个问题的原因是因为我现在负责维护一个旧系统,该系统将同时生成pdb和map文件。我想知道有pdb文件的时候是不是就不需要map文件了!谢谢 最佳答案 我也对此感到疑惑,并决定看看JohnRobbins在他的“调试应用程序”一书中所说的话。他说map文件是“程序全局符号、源代码和行号信息的唯一文本表示”,可以在没有任何支持程序的情况下读取。他接着说,微软会定期更改符号表格式,如果您的客户运行的是非常旧版本的程序,可能很难找到可以解释符号表的旧版本符号引擎在那个非常古老的程序的PDB

c++ - 在 Linux 上 boost windows_shared_memory

您好,我需要在Linux上构建一个项目,但它使用“boost/interprocess/windows_shared_memory.hpp”有什么方法可以在linux上运行它,或者我必须重写这段代码?谢谢 最佳答案 我认为你只需要使用#include而不是boost/interprocess/windows_shared_memory.hpp。这将处理Windows和Linux。 关于c++-在Linux上boostwindows_shared_memory,我们在StackOverfl

c++ - 与 VS2013 相比,gcc 4.7.2 中的 std::map 实现效率非常低?

有人可以帮我理解std::map容器是如何实现的吗?我有一个包含原子成员的类,我不需要调用复制构造函数,所以我使用c++11delete运算符来抑制复制构造函数的隐式生成。MyCalss(constMyClass&a)=delete;这在我的Windows构建中运行良好,但是在Linux中,我收到一条错误消息,通知我std::map类的[]运算符正在尝试调用已删除的函数。在WindowsVS2013和LinuxGCC4.7.xmap实现之间似乎存在重大差异。这促使我做了一个关于如何将对象插入map的实验。我写了这个小示例程序:#include#include#include#inclu

windows - 带有大文本文件的 Perl "out of memory"

我在最新版本的StrawberryPerlforWindows下使用以下代码时遇到问题:我想读入目录中的所有文本文件并处理它们的内容。我目前看不到一种逐行处理它们的方法,因为我想对文件内容进行的一些更改会跨越换行符。处理主要涉及删除大块文件(在我下面的示例代码中,它只是一行,但理想情况下我会运行几个类似的正则表达式,每个都从文件中删除内容)我在大量文件(>10,000)上运行此脚本,它总是因“内存不足!”而崩溃。大于400MB的特定文件上的消息。问题是当我编写一个只处理一个文件的程序时,代码工作正常。机器有8GBRAM,所以我认为物理RAM不是问题。我通读了其他关于内存问题的帖子,但没

.net - "Memory Pressure"是什么意思?

通读TessFerrandez'Blog关于垃圾收集,她说收集有3种可能的原因:Whenyouallocateanewobjectandthegeneration0budgetisreached,i.e.ifthenewobjectwouldcauseittogoover-budget.WhensomeonecallsGC.Collect(InducedGC)Basedonmemorypressure我理解第1点和第2点,但第3点中的内存压力是什么意思?我原以为这是系统中可用的一般内存,但如果系统真的用完了所有内存,那么我想整个系统都会蓝屏。内存压力的实际含义是什么?这与超出一代人的预

windows - 使用 boost::filesystem::path 作为 std::map 中的键

所以std::map想要对键类型进行排序,但我遇到了问题:"a/b""a/b"如何规范化路径以创建排序?这可能吗?我尝试在自定义比较运算符中使用path::generic_string(),但没有成功。fs::equivalent()也无济于事,因为实现平等对于std::map来说还不够,它需要一个排序。这也是为什么这个问题不是HowdoI"normalize"apathnameusingboost::filesystem?的重复问题的原因。.上下文:仅限Windows,Boost1.49,文件系统3。 最佳答案 要使路径具有可比性

c - GetProcessMemoryInfo PROCESS_MEMORY_COUNTERS_EX.PrivateUsage 始终为 0

我正在使用GetProcessMemoryInfo函数通过其PID确定进程内存使用情况。使用常规PROCESS_MEMORY_COUNTERS一切正常,但我需要PrivateUsage成员,它仅存在于扩展结构PROCESS_MEMORY_COUNTERS_EX中。有几个文档促使我强制将扩展类型转换为基本类型,否则我的示例将无法编译。我仍然能够从基本成员获取值,例如PeakWorkingSetSize,但PrivateUsage始终为0。我什至尝试重新定义PSAPI_VERSION-仍然没有。无法使用PSAPI_VERSION这是我的例子。#include#include#include

c++ - 我可以在 std::map 中使用 CComPtr 吗?

我正在用C++在WindowsCOM中编写一个程序,我正在使用CComPtr作为智能指针。我找不到答案的问题是-我可以在std::map中使用CComPtr吗?我有以下代码片段(已简化):std::map>ErrorMap;我希望维护int和IErrorInfo错误信息之间的映射。但是我不确定我是否可以执行以下操作:CComPtrresult;GetErrorInfo(0,&pErrInfo);ErrorMap.insert(std::make_pair(0,result));我担心result智能指针的所有权,以及当ErrorMap被销毁时它是否会正确释放?