Как c выделяет память для постоянной строки?

я хочу измениться таНос, тетсру а также свободно используйте этот libhooker с LD_PRELOAD.
Я изменяю их и проверяю на предмет некоторых тестов. но в одном из них мой код не работает правильно и не знаю почему.
Прецедент:

int main()
{
string s = "Hello";
return 0;
}

мой код выводится:

malloc[0x8229170-0x8229182]
[memcpy] source address 0x8048850 is not allocated.
free(0x8229170)

Я не знаю, как можно выделить память для постоянной строки и почему мой код неверен.
Заранее спасибо.

0

Решение

Строковые константы обычно выделяются в разделе DATA программы. Обычно это помечается как доступное только для чтения, а смещение местоположения определяется во время компиляции.

Эта память обычно не выделяется malloc,

Я не уверен, что вы пытаетесь сделать с memcpy, но вы не можете предположить, что все, что вы хотите, memcpy будет выделено с помощью malloc, Например, все размещено в стеке. Все в разделе данных. Все выделяется с помощью пользовательского распределителя (который может находиться в стеке). Также вам нужно знать о calloc, alloc а также realloc тоже.

3

Другие решения


По вопросам рекламы [email protected]