sign in | join about | help | sitemap
Connecting Tech Pros Worldwide
batista's Avatar

exception : 0xC0000005: Access Violation


Question posted by: batista (Guest) on November 7th, 2005 09:55 AM
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.

4 Answers Posted
Sandeep's Avatar
Guest - n/a Posts
#2: Re: exception : 0xC0000005: Access Violation


batista wrote:[color=blue]
> 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?
>[/color]

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.

Kyle's Avatar
Guest - n/a Posts
#3: Re: exception : 0xC0000005: Access Violation

batista wrote:[color=blue]
> 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.
>[/color]

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
Gianni Mariani's Avatar
Guest - n/a Posts
#4: Re: exception : 0xC0000005: Access Violation

batista wrote:[color=blue]
> 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?[/color]


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.


Greg Comeau's Avatar
Guest - n/a Posts
#5: Re: exception : 0xC0000005: Access Violation

In article <1131356517.625797.72670@g49g2000cwa.googlegroups.c om>,
batista <saadtheleon@gmail.com> wrote:[color=blue]
>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?[/color]

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?
 
Not the answer you were looking for? Post your question . . .
196,798 members ready to help you find a solution.
Join Bytes.com

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 196,798 network members.
Post your question now . . .
It's fast and it's free

Popular Articles

Top Community Contributors