Я использую 64-разрядную машину linux
, поэтому размер моих указателей составляет 8 байтов. Поэтому, глядя на приведенный ниже код, я написал программу ниже segfault сразу после H
в моей строке (в strcpy()
). Но похоже, что этого не происходит. с приведенной ниже программой я думал, что это наполнит и испортит память в x
. Эта ниже программа работает нормально в моей системе, но если я добавлю другую букву в strcpy()
, она будет segfaults. Таким образом, такая проблема, очевидно, зависит от системы, но как эта строка не сбой программы? Я искал такую проблему, если некоторые ссылки присутствуют, вы также можете перенаправить меня. Заранее спасибо.Как обрабатываются строки в C?
int main()
{
int x;
char* c ;
x = 0xF0000000;
strcpy(&c,"ABCDEFGHFFFFFF");
x++;
printf("%X\n",x);
printf("%s\n",&c);
}
Я вижу, что вы указали указатель ... но на что это указывает? –
Конечно его будет компилировать с предупреждениями, но это не дает мне результат, как следующий 'F0000001 ABCDEFGHFFFFFF' я теперь это, безусловно, как вы пишете обычные программы, которые я просто пытаюсь увидеть, как строки копируются и вам у парней определенно нет ответа. –
Ваша программа просто UB, нет ничего полезного в споре. Если вы хотите узнать, что именно делает ваш случай в конкретном прогоне, отломите отладчик и выполните однократную операцию. Имейте в виду, что использование отладчика может изменить поведение программ. – Deduplicator