|
Natza Mitzi wrote: Starting with the .NET Framework version 2.0, a StackOverflowException object cannot be caught by a try-catch block and the corresponding process is terminated by default
yes, that is unfortunate. On the other hand, recovering from a stack overflow
in a reliable way is probably rather tricky.
Natza Mitzi wrote: A simple factorial like:
fact(n)(if(n == 0,1,n * fact(n-1)))
vaporizes the application at fact(46)
That is crap. How much does one stack frame take, 100 bytes? 1KB?
Now take 46 of those and your stack has run out???
IIRC the default stack size is 1 MB.
I just ran a little test and 10000! runs just fine.
|
|
|
|
|
I can use a recursive factorial with numbers up to and including 170
Any higher overflows the UInt1024 that I used for it - no StackOverFlowException
So what happened there?
Though I agree that the advice is pointless..
|
|
|
|
|
I think that it depends on:
a) The cost of opening a function on the stack changes
b) Whether the recursion is a tail recursion or not
Natza Mitzi
|
|
|
|
|
My answer below:
I reduced the occurrence of the problem by splitting some methods and using a dictionary instead of large switches that cause stack bloats. Now a simple recursive factorial method works with 400 instead of 46, that is almost 900% better
Natza Mitzi
|
|
|
|
|
I reduced the occurrence of the problem by splitting some methods and using a dictionary instead of large switches that cause stack bloats. Now a simple recursive factorial method works with 400 instead of 46, that is almost 900% better
Natza Mitzi
|
|
|
|
|
A while ago I inherited a project that was full of the following :
if( CString( str1 ) == CString( str2 ) )
{
}
That was the most annoying thing for a variety of reasons. I should mention that this was a communications-oriented project and all of the character strings had defined sizes so that as OK but apparently someone had an aversion to the strcmp function. I couldn't believe it. Even when there was an actual CString object, like from a dialog, they would cast the other argument to a CString to do the comparison. I guess they didn't know that CString has a const char * operator.
|
|
|
|
|
That's typical of people without C background.
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
[My articles]
|
|
|
|
|
CPallini wrote: That's typical of people without C background.
I think you mean C++.
|
|
|
|
|
leppie wrote: think you mean C++.
Well, C is the C++ 's background foundation.
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
[My articles]
|
|
|
|
|
CPallini wrote: Well, C is the C++'s background foundation.
But C has no types (well not like the OP has ).
|
|
|
|
|
leppie wrote: But C has no types
That's precisely my point.
Only with a (solid maybe) C background he would appreciate the introduced overhead. While, for instance, VB6 people (don't blame me for the cheap shot) maybe used to thinking String is a native type.
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
[My articles]
|
|
|
|
|
BTW Suppose CString equality operator implemented in a Java -string fashion: possibly the fun would be more.
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
[My articles]
|
|
|
|
|
Who knows what the compiler and linker will made of this statement.
I try hard to make parameters const so it can better be optimized.
Greetings from Germany
|
|
|
|
|
Nothing wrong with that statement. Creates two CString objects and do case sensitive compare with CString == operator.
|
|
|
|
|
steveb wrote: Nothing wrong with that statement
In fact it isn't wrong. But it is unnecessary (just added overhead).
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
[My articles]
|
|
|
|
|
if this was the production code of some server that kept on crashing while communicating with clients, the code snippet mentioned is the exact thing I would put in in place of the strcmp which in unsafe. yeah yeah there is strcmp_s, but that just come out in 2005. Code is probably older.
|
|
|
|
|
Well using temporary objects to wrap unreliable code doesn't make sense to me.
I simply won't use unreliable code on a server.
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
[My articles]
|
|
|
|
|
What, checking for null is to sophisticated for you?
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
After the description I have given, you see nothing wrong with creating two objects to do a string comparison and doing this every single time that two strings need to be compared in the app ?
All righty then.
This was in an industrial automation system. That might give a clue as to why I consider it to be horrific. Or not.
|
|
|
|
|
|
Star Vega wrote: I'm working on this horrible legacy... to give you an example, the main form contains about 48000 lines of code, containing gui, business and, yeah, all the data access. Nice, isn't it?
It's a horror. My former company had an MFC application featuring more than 100000 lines of code for the frame window.
Star Vega wrote: But here's (yet) the best part: if you want to display a checkbox at certain moments, why not surround the checkbox code in the form's designer code (auto-generated, remember) with an if-statement?
The difficult part is (you are guessing right!) that you have to rewrite this code very often (whén their code disappears, they don't have a clue). Clever as they are, they attached this text file with the code you have to rewrite so often.
Horror keeps running.
Star Vega wrote: By the way, they offered me training - should I start looking for another company?
I did.
[added]
Someone of my former company saw this post, I suppose...
[/added]
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
[My articles]
|
|
|
|
|
The designer file is meant to hide the code used for the GUI. So better leave it hidden and do not try to touch it
VladovsoftSoftware products for fitness and health club management, storehouses, shops and barcode generation.
|
|
|
|
|
Really? I will forward this message to my colleagues...
|
|
|
|
|
Did you suggest they try .Visible=false ?
Or add it dynamically?
|
|
|
|
|
Star Vega wrote: they offered me training
Sounds like the tail wagging the dog.
Here's what you should do:
1. Find new job.
2. Offer them training.
If they refuse, give your notice. If they accept, withdraw the offer of training stating that it's a lost cause and give your notice.
Good luck!
BDF
A learned fool is more a fool than an ignorant fool.
-- Moliere
|
|
|
|