malloc C# Equal?

I've got a C++ 6.0 Statement...
TOCRResults = (TOCRRESULTS *)malloc(ResultsInf);

I'm needing to (A) figure out what in the world this is even doing ..I believe it is allocating the amount of bytes to TOCRResults that ResultsInf needs...
and ..(B) what would be the C# Equivalent? Thanks for your time.
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Answer to (A):

"TOCRRESULTS" seems to be a user-defined class or type.

then "TOCRResults" is simply a pointer to an instance of that class or type.

the "malloc" statement is to allocate certain amount of bytes in the count of "ResultsInf". These bytes are the memory space to hold/contain the instance of "TOCRRESULTS". Most likely, the value of "ResultsInf" can be determined by using "sizeof(TOCRRESULTS)".

In result, the "malloc" is to create an instance of "TOCRRESULTS",  to which the pointer "TOCRResults" points.

Notes: the allocation takes place at the heap of memory. you must call "free" function after you done using it.

Answer to (B):

C# is 100% pure OO. And you are not encouraged to use pointers in C#. so you just define a class "TOCRRESULTS", and create an instance like you do normally. I assume you know what to do at this point.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial

You don't need to worry about allocating memory in C#.  C# has its own garbage collection and monitors memory usage for you.

However, in the case of your example, it appears as if you are allocating a specific address in memory to store pointer information.

While C# does support pointers, I personally believe that pointers cause more problems than they solve.  Pointers and pointer arithmetic is fantasic and VERY fast if used properly, but can cause some serious memory leaks if used inproperly.

Having said all that, you do not need to worry about allocating a specific memory block in C# like you had to in C++.  The only thing you need to worry about is the scope of the object.  Which functions/classes will need access rights to the data in your object.

Pointers allowed for programmers to ignore scope if they needed to and could create global variables.  If you need a global var in C# then use the static reserved word.


Bummer!  Beaten by mere seconds (with more or less the same repsponse, although stone's is a bit more concise).

oh well...
Rowby Goren Makes an Impact on Screen and Online

Learn about longtime user Rowby Goren and his great contributions to the site. We explore his method for posing questions that are likely to yield a solution, and take a look at how his career transformed from a Hollywood writer to a website entrepreneur.

derekthorntonAuthor Commented:
I know C# Doesn't like pointers, and frankly, neither do I, however the first post was correct, it is a commercial library I have purchased and am trying to port to C#. It is an OCR Engine. This TOCRResults structure is supposed to hold the Results of an OCR Job, but it's just plain not working and I'm getting VERY frustrated. I've already gotten help with other parts of this project, and am starting to wonder if a full port to C# is even possible....
derekthorntonAuthor Commented:
Question Answered - Problem still there, but I did get the answer to the malloc question. If anyone else wants to take a crack at this feel free to ask, It's driving me crazy.
Thanks for the points, derekthornton.

When you say OCR, do you mean Optical Character Recognition? Just for curiosity.

why do you want to port it to C#? Is there any particular reason? Personally, I suggest you just use your Visual Studio.NET to create a Managed C++ class library project. And you shouldn't make much change to port it to Managed C++ project, which is also based and runs on .NET framework.

Then there are a few ways to easily call functions and create instances of library classes from a separate C# program. If you are interested, i will write to you more.

Good luck
derekthorntonAuthor Commented:
I want to write the whole thing in C#. I don't own Visual Studio .NET either, just the individual "Standard" Products. Furthermore, the code I have is pretty unflexible, and I don't like the style the library I bought was coded in. I cannot make it a managed C++ Class Library, because I cannot access the actual 'Source' just the API, so I am stuck with what I have, and calling a C++ .dll from C# is just not something I like to do, it is Very sloppy, in my opinion, and it just never works how I like it to, so I want to rewrite it entirely. And yes, It is an Optical Character Recognition program. I can send you the Solution if you want to see it.
derekthorntonAuthor Commented:
But if I can just make it an easy to use .dll file, that would work. The problem is that it never wants to load correctly in C# when I try to make a .dll in C++.
Windows system 32 bit dlls or COM dlls or any kind of dlls, all can be called in .NET framework's any language, just use the interopabilities of the .Net framework, Search in the MSDN

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.