Показать сообщение отдельно
Старый 01.09.2009, 23:53     # 2
L0rd
Junior Member
 
Аватар для L0rd
 
Регистрация: 02.08.2005
Адрес: Пенза
Пол: Male
Сообщения: 180

L0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd СэнсэйL0rd Сэнсэй
Во-первых, если тебя интересует почему падает с SIGABRT - потому что ты пытаешься перевыделить память по указателю argv, который любезно сформирован для тебя библиотекой CRT и является указателем на массив строк аргументов командной строки, а argc - их числом, и использовать realloc по указателю *argv (вообще каким-то образом изменять эти переменные) неверно.

Теперь - твой realloc по *argv будет перевыделять память по указателю на первую строку из этого массива - т.е., если мы запускаем программу без аргументов, то это будет указатель на строку с именем файла - а чтобы добавить элемент в подобный массив строк тебе надо использовать функцию примерно так:

Код:
argv = (char**)realloc( argv, sizeof(char*) * (++(*argc)) );
__________________
"Раздвоение личности - это не болезнь, а хорошая компания."
"Даже если тебя съели, по крайней мере, у тебя есть два выхода."

L0rd вне форума