I am compiling and using a C++ mex function in Matlab 2011b.
The mex file is acting very strangely. About half of the time it crashes while the other half it does not crash and runs all of the way through.
Does anyone have any ideas what would cause a Mex file to work intermittently that is called from the same place and the same way?
Thanks,
Kevin

 採用された回答

Geoff
Geoff 2012 年 3 月 16 日

1 投票

Sounds to me like you're doing something dodgey inside the C++ code. Specifically, a buffer overrun or invalid pointer access. These have a habit of causing intermittent problems. If your code is not too lengthy or commercially sensitive, feel free to post it.

4 件のコメント

Kevin
Kevin 2012 年 3 月 16 日
Can you explain a bit how a coding problem would be intermittent? It seems odd since most codes either work or they don't.
Geoff
Geoff 2012 年 3 月 16 日
Yes, if you are accessing memory that does not belong to your program, you never know what it might contain.
It might be unused and not cause problems (unless you expect it to contain a valid pointer, perhaps).
But the next time you call, you might just happen to stray into memory that is owned by another process. That is not allowed.
I am just conjecturing here, assuming the most probable cause.
Uninitialised values are another biggie here. Your code might run fine because usually an important (but uninitialised) variable happens to be zero. But next time you run, your program is loaded into another part of memory, and your variable happens to assume a value like 1187126605. If this was an index into an array or string, you'd almost certainly crash.
Kevin
Kevin 2012 年 3 月 16 日
This is exactly what happened. Thanks Geoff.
Geoff
Geoff 2012 年 3 月 19 日
Hehe, I thought so =) No worries, and glad you got it sorted.

サインインしてコメントする。

その他の回答 (1 件)

Jan
Jan 2012 年 3 月 16 日

0 投票

It is impossible to guess the reason without seeing the code.
You can use a debugger to find the problem. Even some print commands allow to find the line, which causes the crash.

カテゴリ

ヘルプ センター および File Exchange で Write C Functions Callable from MATLAB (MEX Files) についてさらに検索

質問済み:

2012 年 3 月 16 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by