Я работаю для класса ОС и по какой-то причине bcc нуждается в memcpy, хотя я не вызывал его в коде и он недоступен, поэтому я запускаю свой собственный, однако он продолжает segfault `
void memcpy( void* destination, void* source, size_t bytes )
{
size_t i = 0;
char* destination__ = ( char* ) destination;
char* source__ = ( char* ) source;
if( !( destination__ == source__ ) )
{
for( ; i < bytes; ++i )
destination__[ i ] = source__[ i ];
}
}
Кажется, это segfault, и я не уверен, почему, он отлично работает, когда все распределено, но не для чего-то вроде следующего.
`
char* foo = "Hello";
char* bar = "Goodbye";
memcpy( bar, foo, 5 );
У меня такое ощущение, что это потому, что foo и bar, вероятно, являются глобальными данными, и это как-то связано с этим, но я не уверен. Я бы не спрашивал, если бы не тот факт, что я нашел другие реализации, которые являются тот же/аналогично в Интернете в других местах. Он падает при компиляции с помощью обычного gcc, который я использую для проверки вне сборки OS Im, которая не имеет диагностики. Я в замешательстве, почему это происходит.
char[]
, а неchar*
? Я думаю, проблема в том, что эти строки были помещены в память, доступную только для чтения. И я думаю, что это дубликат, но я еще не нашел оригинал - person Tim Randall   schedule 27.12.2018memcpy
сломана, а ваш тестовый код. - person Tim Randall   schedule 27.12.2018