Я знаю, что этот вариант использования может показаться немного странным, но мне нужно понять, можно ли сделать что-то подобное.
Это мой код, и он вызывает сбой на Aborted (core dumped)
:
char *my_str = "Hello World";
my_str = realloc(my_str, 50);
-Можете ли вы помочь мне понять, почему он падает?
-Есть ли стандартный/элегантный способ скопировать исходную строку в динамическую память, кроме приведенного ниже? Для меня очень важно использовать realloc()
, а не malloc() + memcpy()
int len = strlen(my_str);
char *new_str = (char*)malloc(len + 1);
memcpy(new_str, my_str, len + 1);
realloc
постоянную строку. Вам нужно будет скопировать его и изменить это. - person Mgetz   schedule 01.05.2014realloc
: толькоrealloc
то, что изначально былоmalloc
d. Вы нарушаете это правило. Если вам больно, когда вы это делаете, не делайте этого. - person Eric Lippert   schedule 01.05.2014calloc
d. Давайте не будем больше путать проблему с неясными деталями, когда пользователь еще не знает основ. - person Eric Lippert   schedule 01.05.2014realloc
все, что созданоmalloc
,calloc
,realloc
иstrdup
, но неalloca
. Есть ли другие функции? - person abelenky   schedule 01.05.2014asprintf
иvasprintf
... а может и больше? - person abelenky   schedule 01.05.2014