с чем могут возникнуть проблемы
Я пытаюсь загрузить 64-битное ядро по адресу 0x1000
AllocatePages
только возвращает адрес выделенной памяти по адресу в последнем параметре. Т.е. куда будут загружены сегменты ELF сказать нельзя и, соответственно, без динамической релокации этот ELF скорее всего работать не будет.AllocatePages
будет то же расстояние, что и между сегментами ELF, в то время как кодогенерация с флагом -fPIE
вполне может считать это расснояние неизменным. Такой ELF нужно загружать в один большой блок памяти, сохраняя расстояние между сегментами.header.e_entry
-- это прыжок в неизвестность. как мне модифицировать мою программу, чтобы она могла определять потоки и корректно отправлять их коллектору?
по умолчанию int является signed
Irrespective of the choice made, char is a separate type from the
other two and is not compatible with either.
signed char
-- это, пожалуй, единственное не вызывающее вопросов применение ключевого слова signed в C-коде написанном человеком. В остальных случаях роль signed -- чисто декоративная. почему программа завершилась? Вмешалась ОС? Но если так, то почему?
Почему я не могу поменять значение самого указателя (ведь указатель - это всего лишь ссылка на адрес памяти, а не на значение).
a = (int *)10;
могу ли я указателю дать ссылку на конкретную ячейку в памяти?
получаю ошибку, ведь вряд ли адрес памяти у указателя хранится в виде 16-ричного целочисленного литерала.
int *a = (int *)0x0061FF18;
Почему так происходит?
Any function with internal linkage can be an inline function. For a function
with external linkage, the following restrictions apply: If a function is declared
with an inline function specifier, then it shall also be defined in the same translation
unit. If all of the file scope declarations for a function in a translation unit include
the inline function specifier without extern, then the definition in that translation
unit is an inline definition. An inline definition does not provide an external
definition for the function, and does not forbid an external definition in another
translation unit. An inline definition provides an alternative to an external
definition, which a translator may use to implement any call to the function
in the same translation unit. It is unspecified whether a call to the function uses
the inline definition or the external definition.
inline void some_inline_func(uint32_t num)
{
. . .
}
extern inline void some_inline_func(uint32_t num)
{
. . .
}
static inline void some_inline_func(uint32_t num)
{
. . .
}
void some_inline_func(uint32_t num)
{
. . .
}
как выполнить запрос и не выводить ничего в консоль?
Как замерять время выполнения функции?
как можно искусно замедлить выполнение
Имеется код вида
int64_t a = b/c
b и c какие-то произвольные числа
требуется записать 0 в переменную a, если произошел SIGFPE.
Проверять значения b и c не вариант, нужно как-то задавать значение для a в обработчике сигнала.
при использовании Valgrind выпадает ошибка:
Опытным путём пришёл к выводу что проблемма связана с ошибкой в самом make.
==6410== Valgrind: "/media/mid/Main_file_m2/Road/rank 0/libftTester/a.out"
Нужно написать программу, которая будет посылать в stdin программы данные и забирать из stdout.
…
Что я делаю не так?
#include <unistd.h>
int main()
{
int fd[2][2];
pipe(fd[0]);
pipe(fd[1]);
pid_t pid_fork = fork();
if (!pid_fork) {
// Дочерний процесс
close(fd[0][1]);
close(fd[1][0]);
dup2(fd[0][0], STDIN_FILENO);
dup2(fd[1][1], STDOUT_FILENO);
execl("/usr/bin/tr", "/usr/bin/tr", "l", "r", NULL);
} else {
// Родительский процесс
close(fd[0][0]);
close(fd[1][1]);
char buf[1000];
ssize_t sz;
write(fd[0][1], "hello, world\n", sizeof("hello, world\n") - 1);
close(fd[0][1]);
sz = read(fd[1][0], buf, sizeof(buf));
if (sz > 0) {
write(STDOUT_FILENO, buf, sz);
}
}
return 0;
}
Почему … GetKeyState() не считывает состояние клавиши?
The key status returned from this function changes as a thread reads key messages from its message queue. The status does not reflect the interrupt-level state associated with the hardware. Use the GetAsyncKeyState function to retrieve that information.
Такие же порты используются при нахождении нажатой клавиши на клавиатуре, так как они могут быть и там и тут?
"Кадр не находится в модуле". Подскажите с чем это может быть связано
HANDLE h = CreateThread( NULL, 0, factorial(gn), NULL, NULL, NULL );
CreateThread(NULL, 0, factorial, NULL, NULL, NULL)
). 3) если ты сделаешь эти два изменения, тебе прийдётся также переделать передачу параметра в функцию factorial и получение результата её работы.