Solved

malloc C# Equal?

Posted on 2003-11-18
9
4,785 Views
Last Modified: 2007-12-19
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.
0
Comment
Question by:derekthornton
  • 4
  • 2
  • 2
  • +1
9 Comments
 
LVL 1

Accepted Solution

by:
stone123 earned 150 total points
ID: 9773745
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.
0
 
LVL 22

Assisted Solution

by:_TAD_
_TAD_ earned 100 total points
ID: 9773748


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.

0
 
LVL 22

Expert Comment

by:_TAD_
ID: 9773768


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

oh well...
0
DevOps Toolchain Recommendations

Read this Gartner Research Note and discover how your IT organization can automate and optimize DevOps processes using a toolchain architecture.

 
LVL 2

Author Comment

by:derekthornton
ID: 9773787
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....
0
 
LVL 2

Author Comment

by:derekthornton
ID: 9773803
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.
0
 
LVL 1

Expert Comment

by:stone123
ID: 9774508
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
0
 
LVL 2

Author Comment

by:derekthornton
ID: 9774529
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.
0
 
LVL 2

Author Comment

by:derekthornton
ID: 9774593
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++.
0
 
LVL 4

Expert Comment

by:meet_zorrer
ID: 9808690
well!
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

0

Featured Post

ScreenConnect 6.0 Free Trial

At ScreenConnect, partner feedback doesn't fall on deaf ears. We collected partner suggestions off of their virtual wish list and transformed them into one game-changing release: ScreenConnect 6.0. Explore all of the extras and enhancements for yourself!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Extention Methods in C# 3.0 by Ivo Stoykov C# 3.0 offers extension methods. They allow extending existing classes without changing the class's source code or relying on inheritance. These are static methods invoked as instance method. This…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question