memory leak in the code?
-
huh Hamid! :| it's simply because he should have put it like:
int* a;
int* b;try { a= new int[N]; b= new int[M]; } catch (bad_alloc&) { cout <<"Error allocating memory!"; } wake up! :)
OK,. what country just started work for the day ? The ASP.NET forum is flooded with retarded questions. -Christian Graus Best wishes to Rexx[^]
Yeah it was a quick sample. ;)
-
huh Hamid! :| it's simply because he should have put it like:
int* a;
int* b;try { a= new int[N]; b= new int[M]; } catch (bad_alloc&) { cout <<"Error allocating memory!"; } wake up! :)
OK,. what country just started work for the day ? The ASP.NET forum is flooded with retarded questions. -Christian Graus Best wishes to Rexx[^]
Not like that, see my earlier post. Always initialize pointers!! In this case set them to NULL(0). int* a = NULL; int* b = NULL;
-
Not like that, see my earlier post. Always initialize pointers!! In this case set them to NULL(0). int* a = NULL; int* b = NULL;
Who said I didn't do it? I'm a c++ programmer. class myclass { int* a; int* b; myclass() { a= NULL; b= NULL; } } ;P
OK,. what country just started work for the day ? The ASP.NET forum is flooded with retarded questions. -Christian Graus Best wishes to Rexx[^]
-
But I suggest he should do something like this :
if(pMyStuff!=NULL) { delete pMyStuff; }
:cool:
OK,. what country just started work for the day ? The ASP.NET forum is flooded with retarded questions. -Christian Graus Best wishes to Rexx[^]
And you are right! :-D
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.
[my articles] -
Who said I didn't do it? I'm a c++ programmer. class myclass { int* a; int* b; myclass() { a= NULL; b= NULL; } } ;P
OK,. what country just started work for the day ? The ASP.NET forum is flooded with retarded questions. -Christian Graus Best wishes to Rexx[^]
Your code said it. Anyway, I think it is pretty important to show it in the code as well.
-
In a case like this you should initialize both a and b to 0 before the try clause. You cannot delete a or b at this stage, I assume you will need to use them later, or what was the purpose of allocating them? int* a = NULL; int* b = NULL; try { a = new int [N]; b = new int [M]; } catch (bad_alloc) { // Tell the user if a or b failed... } // Do some stuff on a or b // Now delete if they are allocated if(a) delete a[]; if (b) delete b[]; Thanks!
Thanks pierre_ribery, I want to confirm with you that your point is we need to delete a or b if they are successful allocated, even if bad_alloc happens (may be caused by other statements), right? regards, George
-
Why you didnt use like this code try { int * a= new int[N]; int * b= new int[M]; } catch (bad_alloc&) { cout <<"Error allocating memory!"; }
Hi Hamid, I am confused. My question is about whether we need to delete a or b if bad_alloc happens, does your reply has anything related to my question? :-) regards, George
-
Yes. :)
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.
[my articles]Thanks for your confirmation, CPallini! regards, George
-
Hi Hamid, I am confused. My question is about whether we need to delete a or b if bad_alloc happens, does your reply has anything related to my question? :-) regards, George
My reply was for check does it with success or no (and my suggestion is when you want to allocate or convert use of try/catch block) and when you got error means that it doesnt allocate any thing to variable.
-
Thanks pierre_ribery, I want to confirm with you that your point is we need to delete a or b if they are successful allocated, even if bad_alloc happens (may be caused by other statements), right? regards, George
Yes that was exactly my point! If you have allocated memory, then you have to delete it. Therefore it is vital to initialize your pointers to 0 before using them. Cheers, Pierre
-
My reply was for check does it with success or no (and my suggestion is when you want to allocate or convert use of try/catch block) and when you got error means that it doesnt allocate any thing to variable.
Thanks Hamid, I have developed a couple of samples, which specific case do you think I need to check? regards, George
-
Yes that was exactly my point! If you have allocated memory, then you have to delete it. Therefore it is vital to initialize your pointers to 0 before using them. Cheers, Pierre
Thanks for your advice, Pierre! regards, George
-
Thanks Hamid, I have developed a couple of samples, which specific case do you think I need to check? regards, George
If you check each block of your program(for exmaple is hwnd valid,etc) you can almost(not always) sure that you didnt get an exception when you run your program
-
If you check each block of your program(for exmaple is hwnd valid,etc) you can almost(not always) sure that you didnt get an exception when you run your program
Hi Hamid, How could I check manually which block is exception safe or not? There are too many runtime errors, like out of memory or input invalid values to new which will cause bad_alloc. :-) regards, George
-
Hi Hamid, How could I check manually which block is exception safe or not? There are too many runtime errors, like out of memory or input invalid values to new which will cause bad_alloc. :-) regards, George
Well its simple you know some actions will be problem and you can anticipate them a short list like: (1) When you want to read a file or write a file:1-does file exist 2-does this file open with other programs 3- can you write to a file on the cd or no,does file on the floppy drive and does it write-protected or no (2) Database do you have access to database (3) when you need to a handle to a window does return value valid or its null (4) Picture does file a image file or no what was return value (5) when you want to read of internet do you have any connection to internet (6) do you have a valid pointer or its null (7) Dynamic memory,does it valid (8).... ------------------------------ After all of them you must free memory. ;)
-
Well its simple you know some actions will be problem and you can anticipate them a short list like: (1) When you want to read a file or write a file:1-does file exist 2-does this file open with other programs 3- can you write to a file on the cd or no,does file on the floppy drive and does it write-protected or no (2) Database do you have access to database (3) when you need to a handle to a window does return value valid or its null (4) Picture does file a image file or no what was return value (5) when you want to read of internet do you have any connection to internet (6) do you have a valid pointer or its null (7) Dynamic memory,does it valid (8).... ------------------------------ After all of them you must free memory. ;)
Thanks Hamid, Comprehensive samples. regards, George
-
Thanks Hamid, Comprehensive samples. regards, George
I glad I could help to you. ;)
-
I glad I could help to you. ;)
Thanks Hamid, Hope we can have further discussion here -- other topics -- I will find one soon. :-) regards, George
-
Thanks Hamid, Hope we can have further discussion here -- other topics -- I will find one soon. :-) regards, George
Very good. ;P
-
Thanks Hamid, Hope we can have further discussion here -- other topics -- I will find one soon. :-) regards, George
I remember when use of controls and other objects check memory for size of program. ;)