|
what about allocating the array with a valid size ?
|
|
|
|
|
The issue here is i do not know the size of the array.
It has to be dynamic.
|
|
|
|
|
Md Saleem Navalur wrote: char *buffer = new char[];
Based on your example, you'd need, at most, 41 bytes. I wouldn't bother Windows' memory manager for such a minuscule amount.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
You need to allocate a buffer having at least as many characters as string length plus 1 (string terminator). Since you don't know a priori what is the string length, then you may allocate a relatively large buffer. For instance:
char * buffer = new char[256];
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
char *buffer = new char[256]...
this can also be declared as
char buffer[1024]....
But the issue here is i do not know the size of the array.
It has to be dynamic.
|
|
|
|
|
Md Saleem Navalur wrote: But the issue here is i do not know the size of the array.
It has to be dynamic.
Then you have a design decision to make. If you only need a few thousand bytes, create a stack-based variable. Otherwise, if the difference between the least amount required and the max amount required is only a few hundred KB, then create a heap-based variable using the max amount. Lastly, employ the use of a string , vector , or similar data structure.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
char *buffer = new char[];
int n, a=5, b=3;
n = sprintf (buffer, "%d plus %d is %d", a, b, a+b);
printf ("[%s] is a %d char long string\n",buffer,n);
Md Saleem Navalur wrote: But the issue here is i do not know the size of the array.
It has to be dynamic.
Actually the issue is that you haven't allocated any memory prior to calling sprintf . Your call to sprintf is overrunning the buffer since the buffer has no size. sprintf doesn't allocate it for you - you must do that prior to calling the function. After you've overrun the buffer, all bets are off on anything else working correctly.
The "new" sprintf_s functions accept a length-of-buffer indicator to avoid an overrun like this.
Judy
|
|
|
|
|
It would probably be better to go with 257 bytes, just in case.
|
|
|
|
|
Nope. The options are 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, well you know how to go on.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
CPallini wrote: Nope. The options are 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, well you know how to go on.
lol -- I wonder if there is any correlation between age/language/education and the habit of declaring arrays sized by powers of 2. I always have.
|
|
|
|
|
I think the correlation is with age. But it is sporadic, for instance it happened to me first when I was 16, then on my 32. Well you know how to go on.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
|
see _scprintf[^] which returns the number of characters in the formatted string. you can use the count to dynamically allocate the buffer that is to be passed to sprintf.
if you have only static hardcoded format string such as "%d plus %d is %d" you can manually calculate the formatted string length as %d formats an integer and you know the maximum and minimum value of integer.
|
|
|
|
|
Hi all,
I've to develop and application that must satisfy some
"real time like" requirements.
The application has to do something periodically; the period
is about 10 milliseconds and it must be very accurate:
it cannot be affected by operations done in the user interface
like mouse moving or window resizing.
What's the best timer to solve this requirement ?
Is it multimedia timer ? or there are better timers ?
Thanks a lot
|
|
|
|
|
On a standard windows platform ? If yes, forget about it because windows is not a real-time operating system. You can have jitter varying up to 10 msec and there's no way to control that. You'll have to use another operating system for that (WinCE for example, which has a different scheduler).
|
|
|
|
|
ilgale wrote: What's the best timer to solve this requirement ?
Hardware timer on an embedded device...
Seriously, if your requirement for determinism is at all strict [*], a general purpose OS like windows is not for you.
The nearest I'd say is some sort of device driver (you don't actually need a device to write one) using waitable timers. But even then, you'll get jitter.
Iain.
[*] You said "very accurate". Being an engineer, I'm assuming you're not exagerating.
Plz sir... CPallini CPallini abuz drugz, plz plz help urgent.
|
|
|
|
|
Hi,
i want to get number of printers attached to my computer, i use Win32_printer class to get the printers, but before connecting WMI i impersonating to some other user. But the WMI gives the output not for the impersonated user but the one who has launched it.
I am launching the process in system accout and trying to impersonate to the logged in user to get the printer information of the logged in user. (Initially i have to launch the process in system account) Does anybody has any idea how to do this??
|
|
|
|
|
Check why the Impersonate to other user is not successful.
|
|
|
|
|
Hello friends,
I've a MFC Extension DLL in which it declares the shared variable as below
in .cpp file I have code as below
#pragma data_seg(".adshared")
int count=100;
#pragma data_seg()
#pragma comment(linker, "/SECTION:.adshared,RWS")
I've the method to get the value of count variable
bool Getvar2(int *p)
{
*p=count;
return true;
}
in .DEF file I have the code as below
Getvar2 @1
count @2
In the client application I've tried the code as below
1)
int *i;
i = (int*) GetProcAddress(m_hDLL, "count");
2)
//FunPtr2 is typedef bool(*FunPtr2)(int *p1);
p=(FunPtr2)GetProcAddress(m_hDLL,"Getvar2");
if(p(v))
{
}
In both the above cases the program crahsed when I try to access shared variable of the MFC Extension DLL.
How can we access the shared variable from the client application?
ritz1234
|
|
|
|
|
ritz1234 wrote: p=(FunPtr2)GetProcAddress(m_hDLL,"Getvar2");
Have you checked p value?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Thanks for the reply,
yes,I've checked the value of p and it contains the valid value.
The access violation occures at the next line after p has been intialized.
ritz1234
|
|
|
|
|
How v is declared?
Why don't you use accessor methods (i.e. int getCount() , void setCount(int x) )?
Have you made a test with a not-shared variable?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
Thanks cPallini,
It works for me.
See you tomorrow.
ritz1234
|
|
|
|
|
i have a simple game i need creating to help later on with my course, can any one please help ASAP! thank you
|
|
|
|
|
dinozulf wrote: i have a simple game i need creating to help later on with my course, can any one please help ASAP!
Yes, someone can.
dinozulf wrote: thank you
You're welcome.
BTW have you read forum guidelines?
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|