memory leak in the code?
-
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. ;)
-
I remember when use of controls and other objects check memory for size of program. ;)
Hi Hamid, Is your comment related to my original question? My question is not talking about windows controls. :-) regards, George
-
Hi Hamid, Is your comment related to my original question? My question is not talking about windows controls. :-) regards, George
No I think its helpful if you know. :-D
-
No I think its helpful if you know. :-D
Hi Hamid, I am interested. What do you mean "check memory size of a program"? Could you provide some samples or links or more descriptions please? regards, George
-
Hi Hamid, I am interested. What do you mean "check memory size of a program"? Could you provide some samples or links or more descriptions please? regards, George
My intent is when run your program monitor memory for detaily of your program.
-
My intent is when run your program monitor memory for detaily of your program.
Thanks Hamid, You mean in the current process, monitor the memory consumed by current process? And what is its purpose? If you have some links or samples, it will be better to understand your points. :-) regards, George