Click here to Skip to main content
16,011,868 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: constant String Memory Usage Pin
Jim Howard18-Jan-01 6:50
Jim Howard18-Jan-01 6:50 
GeneralRe: constant String Memory Usage Pin
Ghazi H. Wadi18-Jan-01 7:22
Ghazi H. Wadi18-Jan-01 7:22 
GeneralRe: constant String Memory Usage Pin
Erik Funkenbusch18-Jan-01 10:53
Erik Funkenbusch18-Jan-01 10:53 
GeneralJihad! GetBuffer/ReleaseBuffer considered Evil Pin
Jim Howard18-Jan-01 11:29
Jim Howard18-Jan-01 11:29 
GeneralJihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
Jim Howard18-Jan-01 12:08
Jim Howard18-Jan-01 12:08 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
Erik Funkenbusch18-Jan-01 12:56
Erik Funkenbusch18-Jan-01 12:56 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
18-Jan-01 13:17
suss18-Jan-01 13:17 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
19-Jan-01 6:28
suss19-Jan-01 6:28 
> You keep saying how something is bad without proving any real data
> to back it up, other than your opinion. Show me an example of how
> this is dangerous (at least more dangerous than using a seperate buffer).

Hmmm... How about trying to *think* about potential dangers, before jumping on the keyboard to counterattack? Watch, I will demonstrate:

Think (try it)... How about because you now have more places to screw up, esp. with less experienced coders:

o Should I call GetBuffer() or GetBufferSetLength()? Potential screwup #1.
o The call to GetBuffer()/GetBufferSetLength() : when using char/TCHAR arrays, most people are used to including space for the NUL terminator. You do not have to specify NULs most of the time when using string objects. Potential screwup #2.
o The call to ReleaseBuffer() : did you place a NUL in there, and/or did you specify the length of the new string in the call to ReleaseBuffer()? Are there embedded NULs? (After all, you asked for a BUFFER, not a STRING BUFFER.) Potential screwup #3.
o Walking off a local buffer can usually be quickly detected in debug builds. It might be more difficult to see if you stepped on either a CString's internal state, or a CStringData's internal state. Potential screwup #4.
o People that do not know any better will store the pointer returned by GetBuffer()/GetBufferSetLength(). Local buffers tend not to change their location/address. Potential screwup #5

Another general issue:
o Using any string object (that uses dynamically allocated memory) is slower than using local buffers. That is VERY IMPORTANT when dealing with multiple-CPU systems, and running into heap contention.

BTW:
> I think MikeB's advice to use standard buffers (if you need ultimate
> efficency) and then save them in CString is correct. It's an opinion
> and we all have them.

No, obtaining and using a local buffer *IS* faster (moving your stack pointer) than using a string object that dynamically allocates its memory. Welcome to the world of facts! Smile | :)

Peace!

-=- James.

GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
Erik Funkenbusch19-Jan-01 19:36
Erik Funkenbusch19-Jan-01 19:36 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
22-Jan-01 4:23
suss22-Jan-01 4:23 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
Erik Funkenbusch22-Jan-01 13:04
Erik Funkenbusch22-Jan-01 13:04 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
James R. Twine30-Jan-01 10:15
James R. Twine30-Jan-01 10:15 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
Erik Funkenbusch31-Jan-01 13:22
Erik Funkenbusch31-Jan-01 13:22 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil - Part II Pin
James R. Twine2-Feb-01 7:17
James R. Twine2-Feb-01 7:17 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil Pin
Erik Funkenbusch18-Jan-01 13:06
Erik Funkenbusch18-Jan-01 13:06 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil Pin
Walter Gildersleeve18-Jan-01 20:07
Walter Gildersleeve18-Jan-01 20:07 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil Pin
Jim Howard22-Jan-01 8:46
Jim Howard22-Jan-01 8:46 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil Pin
Erik Funkenbusch22-Jan-01 13:39
Erik Funkenbusch22-Jan-01 13:39 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil Pin
Sven Axelsson25-Jan-01 3:23
Sven Axelsson25-Jan-01 3:23 
GeneralRe: Jihad! GetBuffer/ReleaseBuffer considered Evil Pin
Erik Funkenbusch25-Jan-01 11:55
Erik Funkenbusch25-Jan-01 11:55 
QuestionHow to remove Console App's button from Taskbar? Pin
16-Jan-01 14:24
suss16-Jan-01 14:24 
QuestionWhy does New Class dialog not allow custom classes? Pin
16-Jan-01 14:18
suss16-Jan-01 14:18 
AnswerRe: Why does New Class dialog not allow custom classes? Pin
Christian Graus16-Jan-01 16:22
protectorChristian Graus16-Jan-01 16:22 
GeneralResizeing View programatically... Pin
16-Jan-01 8:45
suss16-Jan-01 8:45 
GeneralRe: Resizeing View programatically... Pin
Christian Graus16-Jan-01 9:12
protectorChristian Graus16-Jan-01 9:12 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.