Обратите внимание, попробуйте изменить ваш код, чтобы избавиться от коды HTML побег. Ну, хотя это было некоторое время, так как я использовал C и C , realloc, которое произрастает использует только значение указателя памяти, если есть место в памяти после того, как ваш исходный блок. Например, рассмотрим такую ситуацию: (ХХХХХХХХХХ..........) Если курсор указывает на первую X, и . значит, свободное место памяти, и вы увеличить размер памяти, на которую указывает переменная на 5 байт, то все получится. Это конечно упрощенный пример, как блоки округляются до определенного размера для выравнивания, но все равно. Однако, если впоследствии вы пытаетесь вырастить его еще на 10 байт, а там только 5 в наличии, его нужно будет переместить блок в памяти и обновить ваш указатель. Однако, в вашем примере вы передаете функции указатель на символ, а не указатель на переменную, и таким образом, хотя strrep функция внутренне может быть возможность корректировать переменной в использовании, он является локальной переменной в функции strrep и ваш вызывающий код останется исходный указатель переменной. Это значение указателя, однако, был освобожден. В вашем случае, входной сигнал является виновником. Однако, я хотел бы сделать одно предложение. В вашем случае это выглядит как ввод переменной действительно ввод, и если это так, он не должен быть изменен, на всех. Таким образом, я попытаюсь найти другой способ сделать то, что вы хотите сделать, не изменяя входного сигнала, в качестве побочных эффектов, как это может быть трудно отследить.