Solved

malloc C# Equal?

Posted on 2003-11-18
9
4,718 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
 
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
Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

 
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

Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

Join & Write a Comment

Bit flags and bit flag manipulation is perhaps one of the most underrated strategies in programming, likely because most programmers developing in high-level languages rely too much on the high-level features, and forget about the low-level ones. Th…
Article by: Ivo
C# And Nullable Types Since 2.0 C# has Nullable(T) Generic Structure. The idea behind is to allow value type objects to have null values just like reference types have. This concerns scenarios where not all data sources have values (like a databa…
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

708 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now