Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7093187
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T08:24:28+00:00 2026-05-28T08:24:28+00:00

I have a mex file (compiled in VS2010, Matlab 2010b) which accepts a variable,

  • 0

I have a mex file (compiled in VS2010, Matlab 2010b) which accepts a variable, and change it. For example, in the mex file it looks like:

double *fp = (double *)mxGetPr (prhs[0]);
*fp = someDoubleValue;

In order to compare the Matlab implementation and the mex implementation, I make a copy of the variable before calling the mex file:

var_mex = var;
mymex (var_mex);

To my surprise, both var_mex and var change (to the same value of course), as if I created a reference to var and not a copy of it.

Is this a known issue? How can I convince Matlab to copy the variable?

EDIT

Since I suspected that this issue is a result of Matlab optimizing its memory management, I did some “do nothing” calculation on var before calling the mex file, i.e

var=var+1;
var=var-1;

and indeed it solves the problem. I would still be glad to get some information (or other suggestions) on this, if someone encountered it as well.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T08:24:29+00:00Added an answer on May 28, 2026 at 8:24 am

    In MATLAB, most variables are passed around as if they are being passed by value. The notable exception to this is that instances of classes that inherit from handle are explicitly passed by reference.

    There’s a blog entry here which goes into some detail about this.

    So, when you execute

    var_mex = var;
    

    You end up with var_mex referring to the same data as var.

    When you’re writing to an mxArray inside a mex function, you have great power to break things because you’re given the underlying address of the data. If you modify an element of the prhs array, you might inadvertently end up modifying other variables sharing the same data. So, don’t do that. In fact, the mex doc explicitly tells you not to do that.

    The reason that the var + 1 trick works is that by modifying the data, you’re forcing MATLAB to make a copy of the data.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I am writing a Matlab mex-file. However, mex-files seem to have a serious limitation:
Hey there, assuming I have a compiled mex file with the name 'myMx', is
Hey there, I have a mex file which I want to parallelize with the
I have a mex file but not the C code it was compiled from.
I have a C++ file that: starts the matlab engine calls matlab_optimize() (a compiled
I have a mex module called p.mexw64 which uses another dll called p.dll The
I have a mex64 dll compiled on my machine. I used Matlab 2009b with
Is there a way to get the mex file for a built-in MATLAB m-
I am trying to create a mex file that interfaces MATLAB with an external
I have been trying to follow this example for compiling vtk in MATLAB using

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.