|
Hi Guys,
I have a void* Message pointer.
i wonder how can i print out the content of the memmory which be pointed by the void type pointer.
And is there any article introduce about the void* pointer in detail.
Thanks very much in advance!
|
|
|
|
|
A void * is a memory address, and you have no idea what is in it. YOu could turn it into a char pointer and thus iterate over the data a byte at a time. But you'll have no idea of it's type, or how long it is.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Hi Christian,
Thanks verymuch for your help!
there should be a string stored in side the memory address.
Is it possible i can direct cast the it to a string typ?
Many thanks
|
|
|
|
|
Yes, you can do a static_cast or a simple C style cast, just make sure you have valid string at the address, otherwise the thing will blow up at runtime.
Regards
Senthil
_____________________________
My Blog | My Articles | WinMacro
|
|
|
|
|
The following code sequence produces an "A" on stdout, and I cannot figure it out why. PLEASE help !
stringstream os;
string buf;
os.str("");
buf=os.str();
cout << buf << flush;
|
|
|
|
|
How to arrange message sending and getting for example in MDI windows forms app I need to send a custom message WM_USER+1 or something from child to parent and to get it in parent. Something like in VC++ ON_MESSAGE(...) macro is it possible in windows forms, please give a snippet of code
9ine
|
|
|
|
|
|
ok here is what I need to to.
I have a system.string, and I would like to write to file. for this I thought I was gonna use fputs(). the prob is it must be a const char * and not some sort of string. I managed to convert it to __wchar_t __gc[] but this is not what I need.
thank you
|
|
|
|
|
quarry_06 wrote:
fputs().
Why are you using C file handling ?
quarry_06 wrote:
__wchar_t __gc[]
.NET uses Unicode strings, so you're going to need to convert from Unicode to ASCII if you want to use a char *.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
can u point me to a quick introduction of .net file handling with c++
thank you
|
|
|
|
|
I wouldn't bother, I'd just use C++. If you search the site for ifstream, you'll find articles from me, at least. C++ file handling is very rich, the only benefit of using MC++ for file handling would be that it would be bound to take the String object you've got there.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian Graus wrote:
the only benefit of using MC++ for file handling would be that it would be bound to take the String object you've got there.
it is also platform independant, as we can use exactly the same way the .NET framework on windows NT, 2k, XP, 2k3, MAC...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
toxcct wrote:
it is also platform independant, as we can use exactly the same way the .NET framework on windows NT, 2k, XP, 2k3, MAC...
What crap is this ? Using .NET file handling is MORE platform independant than using straight C++ ? Are you on drugs ?
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
|
|
char *t1="Tommy";
char *t2="Lee";
strcat(t1,t2);
whatz wrong with the above code?
i'm using VC6.0.. the application gets terminated..
if i use char[] its working.... then y not char*? whatz the difference??
|
|
|
|
|
MOTLEY !!!!
Sorry. First of all, you're asking in the C++/CLI board, which is for managed C++. Yeah, the new name makes it less clear.
Secondly, you should prefer to use the std::string class, or even CString, rather than manipulating char *.
Finally, the first argument passed into strcat should contain enough space after the null terminator to make room to copy in the second string. This is the sort of crap that makes C string handling really sucky, compared to using std::string.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
char *t1="Tommy";
char *t2="Lee";
strcat(t1,t2);
//wrong
char t1[]="Tommy";
char t2[]="Lee";
strcat(t1,t2);
//right
char*'s are pointers to an array of char's
|
|
|
|
|
Hi all,
When Iam making a "push_back" into the vector,Its pushing back a new object into my vector(co's it goes to the constructor of the object) although ,Iam passing a refererence of the object into the "push_back".
Does "Push_Back" make a copy of the object passed to it.How can I avoid it....
Thanks...
|
|
|
|
|
Yeap push back will make a copy. It does not matter you pass a ref into it. You should have found that a lot of copy constructors take a reference and that's what you r doing.
To avoid it, you should declare a vector of pointers rather than the that class.
e.g.
class CMyClass
{
....
};
std::vector<*CMyClass> myVec;
Just remember to delete everyting at an appropriate time so that there's no memory leak
|
|
|
|
|
Laffis wrote:
Yeap push back will make a copy. It does not matter you pass a ref into it.
no, it get what you give to it, a ref, a pointer or a value, but nowhere push_back() take the decision of copying its parameter to add to the vector.
Laffis wrote:
You should have found that a lot of copy constructors take a reference and that's what you r doing.
but it's their job ! constructors are supposed to create a new instance of a class, getting some or some other parameter types. of course, a constructor getting a reference have to copy/clone its parameter to avoid multiple references on the same memory area...
TOXCCT >>> GEII power [toxcct][VisualCalc]
|
|
|
|
|
push_back should make a copy toxcct, it being a copy of the object, or a copy of a pointer or whatever you declare it should be.
Consider the following test code:
class CMy
{
public:
CMy(const CMy &m)
{
this->n = m.n;
};
CMy(const CMy *pm)
{
this->n = pm->n;
};
operator=(const CMy &m)
{
this->n = m.n;
};
CMy() {n=911;};
int n;
};
void main(...)
{
std::vector<cmy> vt;
CMy *my1 = new CMy();
vt.push_back(*my1); // made a copy here?
delete my1; // delete the created CMy object.
std::vector<cmy>::iterator it = vt.begin(); // LineA,crash?
CMy my2 = *it; // LineB,crash?
int nn = my2.n; // But you still get 911 here!
}
If push_back does not make a new copy, LineA and LineB will crash.
But on the contrary, you should see that at the last line the object still exists in the vector.
It is not their decision to implement copy constructor. You should make your copy constructor when shallow copying is not enough, otherwide do not making your own. The decision is yours.
In the above test code the copy constructors are not neccesary at all. I had the impression that the msg author has debugged into copy constructor so I assumed he wrote his own version.
|
|
|
|
|
Yes,I did Overrided my copy Constructor,co's wanted deep copying.Now Iam storing in my Vector- Pointers & not objects anymore....
|
|
|
|
|
Just becareful with memory leak and you are rolling.
As far as I know, list, map also make copy of inserted element.
|
|
|
|
|
hi
i wanna know how to turn on/off the lights with a C code.
would u tell me what hardawre i do need to do this and also tell me how to write the code?
thx
|
|
|
|