gpt4 book ai didi

c++ - 具有动态内存的命名管道策略?

转载 作者:可可西里 更新时间:2023-11-01 10:02:03 26 4
gpt4 key购买 nike

好的,所以我有一个需要一些 IPC 的应用程序...我认为命名管道是可行的方法,因为它们非常易于使用。

无论如何,我有一个关于如何使用命名管道处理动态内存的问题。

假设我有这样一个类:

class MyTestClass {
public:
MyTestClass() { _data = new int(4); }

int GetData() { return *_data; }
int GetData2() { return _data2; }

private:
int* _data;
int _data2;
};

现在,当我创建一个充满 MyTestClass 对象的缓冲区然后通过管道发送它们时,我显然在目标进程中丢失了 _data 并得到了垃圾。我应该使用一些策略吗?对于简单的情况,我可以使用值类型,但对于许多复杂的类,我需要使用某种动态内存,而且我喜欢指针。

或者,我应该只考虑使用共享内存吗?谢谢

最佳答案

命名管道和共享内存都有类似的问题:您需要将结构的内容序列化到发送端,并从接收端反序列化结构。

无论您使用的是命名管道还是共享内存,序列化过程本质上都是相同的。对于嵌入式指针(如 _data 和 _data2),您需要以一致的方式序列化指针的内容。

您可以使用多种序列化策略,具体取决于您的结构在内存中的布局方式以及您的 IPC 必须具备的效率。或者您可以使用 DCE RPC 并让 RPC 编码(marshal)处理代码为您处理复杂性。

关于c++ - 具有动态内存的命名管道策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1391670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com