小编pch*_*hot的帖子

使用Microsoft.Office.Interop.Outlook读取*.msg outlook文件时出现问题

我正在编写一段代码,用于处理从*msg Outlook文件中存储的电子邮件中提取信息.我是如何做到这一点的,我从C#Outlook interop和OpenSharedItem开始打开MSG文件.但是当调用方法OpenSharedItem时会出现这样的错误System.AccessViolationException.谁知道问题是什么?
这是导致错误的代码

Outlook._Application app = new Outlook.Application();
Outlook.NameSpace NS = app.GetNamespace("MAPI");
Outlook.MAPIFolder inboxFld = NS.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox);
Outlook.MailItem fld =  (Outlook.MailItem) app.Session.OpenSharedItem("E://Projects//C#//message1.msg");
Run Code Online (Sandbox Code Playgroud)

c# outlook msg

4
推荐指数
1
解决办法
4906
查看次数

无法释放指向先前分配的结构的指针

我正在创建简单的粒子系统.我有两个typedef结构.首先表示具有一些字段的单个粒子.第二个代表粒子系统.我的问题是我无法释放为每个粒子分配的内存.真的不知道出了什么问题.这是结构:

typedef struct {
   float m;  
   float *x;  
   float *v;    
   float *f;     
   float R;
} *Particle;

typedef struct {
   Particle *p;
   int n; 
   float t; 
} *ParticleSystem;
Run Code Online (Sandbox Code Playgroud)

这里是分配代码

ParticleSystem sys = (ParticleSystem) malloc(sizeof(ParticleSystem));  
sys->p =  (Particle *) malloc(sizeof(Particle)*noOfParticles);

for(int i=0;i<noOfParticles;i++){
    sys->p[i] = (Particle)malloc(sizeof(Particle));

    sys->p[i]->f = (float*)malloc(sizeof(float)*2);
    sys->p[i]->f[0] = 0.0f;
    sys->p[i]->f[1] = 0.0f;

    ...

    sys->p[i]->R = radius;
    sys->p[i]->m = mass;

}

sys->n=noOfParticles;
sys->t = 0.0f;
Run Code Online (Sandbox Code Playgroud)

和释放

int n = sys->n;
for(int i=0;i<n;i++){
    free(sys->p[i]->f);

    ...

    free(sys->p[i]);//here it breaks
}
free(sys->p);
free(sys);
Run Code Online (Sandbox Code Playgroud)

在行"free(sys-> …

c memory free struct

2
推荐指数
1
解决办法
1435
查看次数

标签 统计

c ×1

c# ×1

free ×1

memory ×1

msg ×1

outlook ×1

struct ×1