я хочу измениться таНос, тетсру а также свободно используйте этот libhooker с LD_PRELOAD.
Я изменяю их и проверяю на предмет некоторых тестов. но в одном из них мой код не работает правильно и не знаю почему.
Прецедент:
int main()
{
string s = "Hello";
return 0;
}
мой код выводится:
malloc[0x8229170-0x8229182]
[memcpy] source address 0x8048850 is not allocated.
free(0x8229170)
Я не знаю, как можно выделить память для постоянной строки и почему мой код неверен.
Заранее спасибо.
Строковые константы обычно выделяются в разделе DATA программы. Обычно это помечается как доступное только для чтения, а смещение местоположения определяется во время компиляции.
Эта память обычно не выделяется malloc
,
Я не уверен, что вы пытаетесь сделать с memcpy, но вы не можете предположить, что все, что вы хотите, memcpy будет выделено с помощью malloc
, Например, все размещено в стеке. Все в разделе данных. Все выделяется с помощью пользовательского распределителя (который может находиться в стеке). Также вам нужно знать о calloc
, alloc
а также realloc
тоже.