在我们的项目中,我们通过命名管道通信两个应用程序,一个在C#中,另一个在C++中。我们的目的是在它们之间传递内存指针,并能够在两个应用程序中访问它们所指向的对象。我们当前的代码将产生一个System.AccessViolationException:
System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。
到目前为止,我们使用的是指向自定义结构的shared_ptr,并将指针写入到C++中的缓冲区,如下所示:
typedef struct {
int one;
int a;
int two;
在C++中:
const size_t N = 1000;
int* p = new int[N];// time=t0
我的程序只有一个线程,在将内存分配给p之后,我的程序将只读取p指向的内存。
关于p的价值,标准是什么?
p会将它在time=t0获得的值保留到delete of p为止吗?
或者,操作系统可以自行决定重新分配p指出的内存吗?
它是否取决于N的值?