Tôi có một chương trình đơn giản và tôi bị truy cập vi phạm tại *(str + start)
. Tại sao? Tôi sẽ có thể thay đổi nó. Đúng?Cách giải quyết vi phạm quyền truy cập bằng cách viết lỗi vị trí?
void fn()
{
char *str = "Hello wordl!";
int end = strlen(str);
int start = 0;
end--;
while(start < end)
{
*(str + start) = *(str + end); <--- Access violation writing location *(str + Start).
end--;
start++;
}
}
gợi ý của bạn sẽ giống với mã hiện tại. –
char str [] so với kết quả char * str trong chuỗi có thể sửa đổi được. – Michael
Dưới đây là một vài tham chiếu đến điều này: http://www.iso-9899.info/wiki/StringsByExample https://www.securecoding.cert.org/confluence/display/cplusplus/STR30-CPP.+Do + không + cố gắng + để + sửa đổi + chuỗi + literals – Michael