f



exception : 0xC0000005: Access Violation

Hi,

I am getting the following exception

First-chance exception in TestMansoor.exe: 0xC0000005: Access Violation

When i run the following code

1 int main(void)
2 {
3 char* str1 = "MA";
4 char s = str1[0];
5 str1[0] = 'r';
6 return 0;
7 }

i'm getting exception on line 5. Why?

Bye.

0
11/7/2005 9:41:57 AM
comp.lang.c++ 49423 articles. 7 followers. Post Follow

4 Replies
1144 Views

Similar Articles

[PageSpeed] 20

batista wrote:
> Hi,
>
> I am getting the following exception
>
> First-chance exception in TestMansoor.exe: 0xC0000005: Access Violation
>
> When i run the following code
>
> 1 int main(void)
> 2 {
> 3 char* str1 = "MA";
> 4 char s = str1[0];
> 5 str1[0] = 'r';
> 6 return 0;
> 7 }
>
> i'm getting exception on line 5. Why?
>

str is a constant string , you can only access it. If you want to
change the contents of str, you will either have to declare it as an
array of allocate memory for it.

0
11/7/2005 9:46:11 AM
batista wrote:
> Hi,
> 
> I am getting the following exception
> 
> First-chance exception in TestMansoor.exe: 0xC0000005: Access Violation
> 
> When i run the following code
> 
> 1 int main(void)
> 2 {
> 3 char* str1 = "MA";
> 4 char s = str1[0];
> 5 str1[0] = 'r';
> 6 return 0;
> 7 }
> 
> i'm getting exception on line 5. Why?
> 
> Bye.
> 

becouse "MA" is a string iteral, and as such cant be modified, even 
though its possilble to get a non const pointer to it for some bizzare 
reason

your code is more less equivalent of

((char*)"MA")[0] = 'r';

if you want to get a copy of "MA" what you want to do is
char str1[] = "MA";
now str1[0] is modifiable
0
Kyle
11/7/2005 9:53:28 AM
batista wrote:
> Hi,
> 
> I am getting the following exception
> 
> First-chance exception in TestMansoor.exe: 0xC0000005: Access Violation
> 
> When i run the following code
> 
> 1 int main(void)
> 2 {
> 3 char* str1 = "MA";
> 4 char s = str1[0];
> 5 str1[0] = 'r';
> 6 return 0;
> 7 }
> 
> i'm getting exception on line 5. Why?


Line 3 should read:

const char* str1 = "MA";

It is specifically allowed by the standard as your original because of 
the volume of legacy code that would otherwise break.  (IMHO a bad move 
by the standards comittee.)

You can however rewrite line 3 like:

char str1[] = "MA";

.... now you're free to change the three characters that is str1.


0
gi2nospam (1236)
11/7/2005 6:03:01 PM
In article <1131356517.625797.72670@g49g2000cwa.googlegroups.com>,
batista <saadtheleon@gmail.com> wrote:
>Hi,
>
>I am getting the following exception
>
>First-chance exception in TestMansoor.exe: 0xC0000005: Access Violation
>
>When i run the following code
>
>1 int main(void)
>2 {
>3 char* str1 = "MA";
>4 char s = str1[0];
>5 str1[0] = 'r';
>6 return 0;
>7 }
>
>i'm getting exception on line 5. Why?

Check out http://www.comeaucomputing.com/techtalk/#stringliteral
-- 
Greg Comeau /     Celebrating 20 years of Comeauity!
Comeau C/C++ ONLINE ==>     http://www.comeaucomputing.com/tryitout
World Class Compilers:  Breathtaking C++, Amazing C99, Fabulous C90.
Comeau C/C++ with Dinkumware's Libraries... Have you tried it?
0
comeau (830)
11/8/2005 3:25:29 AM
Reply: