Messages in this thread | | | Date | Wed, 10 Oct 2007 00:03:31 +0200 | Subject | Re: [PATCH] NTFS error messages: replace static char pointers by static char arrays | From | "Ahmed S. Darwish" <> |
| |
On Tue, Oct 09, 2007 at 08:33:59PM +0200, Philipp Matthias Hahn wrote: > Hello! > > On Tue, Oct 09, 2007 at 02:40:35PM +0200, Ahmed S. Darwish wrote: > > On Tue, Oct 09, 2007 at 01:55:42AM +0400, Dmitri Vorobiev wrote: > > > The patch below contains a small code clean-up for the NTFS driver: all > > > static char pointers to error message strings have been replaced by > > > static char arrays. > > char * a = "a"; // pointer and content can be changed
Only the pointer can be changed here. AFAIK "a" is a const string.
> const char * b = "b"; // the thing pointed to is const
The "const" here is redundant (just useful for forcing the compiler to prevent us from shooting our feet). The "b" string is already constant.
> char * const c = "c"; // the pointer is const > const char * const d = "d"; // pointer and content can't be changed > > void foo(void) { > *a = 'A';
This will segfault.
> a++; > *b = 'B'; // error: assignment of read-only location > b++; > *c = 'C';
Last line will segfault too.
> c++; // error: increment of read-only variable 'c' > *d = 'D'; // error: assignment of read-only location > d++; // error: increment of read-only variable 'd' > } >
Please continue below.
> > Isn't the only difference between char *c = "msg" and char c[] = "msg" is > > that the first is a non-const pointer to a const char array while the second > > is a modifiable char array ? > > $ cat [ab].c > const char *a = "a"; > const char b[] = "b"; > $ gcc -c [ab].c > $ size [ab].o > text data bss dec hex filename > 2 4 0 6 6 a.o > 2 0 0 2 2 b.o > > 'a' has two entries: one for the named read-writeable pointer, and one for the > anonymous read-only string, the pointer points to. > 'b' has a single entry: just the named read-only string. >
Got the point, Thanks!.
-- Ahmed S. Darwish HomePage: http://darwish.07.googlepages.com Blog: http://darwish-07.blogspot.com - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |