[問題] 記憶體爆掉...關於mex file已回收
第一次使用mex來使用我的c ++ code
以下是我的code
只要我設定code 的lamda_number 的值超過2時,
就會跳出out of memory的問題 ....不知道該怎麼辦?
===================================================================
#include <iostream>
#include "mex.h"
using namespace std;
#define OUT plhs[0] // 定義輸出變數
#define lamda_number 2
struct MC_result
{
double weight[lamda_number];
double r[lamda_number];
};
const char *fieldNames[] = {"weight", "r"};
void mexFunction(int nlhs , mxArray *plhs[] ,int nrhs , const mxArray *prhs[])
{
double Total_Hemoglobin_Concentration;
double Sto2_fraction;
double mus_A;
double mus_K;
int weightFieldIndex,rFieldIndex;
struct MC_result data;
int dims[2]={2,1};
if (nrhs!=4)
{mexErrMsgTxt("輸入參數的數目不對歐!");}
Total_Hemoglobin_Concentration = mxGetScalar(prhs[0]);
Sto2_fraction = mxGetScalar(prhs[1]);
mus_A = mxGetScalar(prhs[2]);
mus_K = mxGetScalar(prhs[3]);
// 產生輸出結構陣列
OUT = mxCreateStructArray(2, dims, lamda_number, fieldNames);
// 取得欄位名稱對應的索引值,以便使用 mxSetFieldByNumber() 對欄位值進行設定
weightFieldIndex = mxGetFieldNumber(OUT, "weight");
rFieldIndex = mxGetFieldNumber(OUT, "r");
data.weight[0]=Total_Hemoglobin_Concentration;
data.weight[1]=Sto2_fraction;
data.r[0]=mus_A;
data.r[1]=mus_K;
for (int i=0; i<lamda_number;i++) {
mxArray *fieldValueWeight,*fieldValueR;
// 填入欄位名稱 weight 的值
fieldValueWeight = mxCreateDoubleMatrix(1,1,mxREAL);
*mxGetPr(fieldValueWeight) = data.weight[i];
mxSetFieldByNumber(OUT, i, weightFieldIndex, fieldValueWeight);
// 填入欄位名稱 r 的值
fieldValueR = mxCreateDoubleMatrix(1,1,mxREAL);
*mxGetPr(fieldValueR) = data.r[i];
mxSetFieldByNumber(OUT, i, rFieldIndex, fieldValueR);
}
}
謝謝大家
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.174.25
→
04/12 12:03, , 1F
04/12 12:03, 1F