hooky-mars
Зарегистрирован: 03.01.2006 Сообщения: 39
|
Добавлено: Пн Апр 07 2008 13:16 Заголовок сообщения: Исключение |
|
|
Saluer!
Заполняю список:
Код: |
void ParseCmd::pcList::Add(char *k, char *v)
{
try
{
if(pbeg)
{
prNode *pv = new prNode(); <---- Тут вылетает ошибка если второй раз вызывается эта функция
pv->key = new char[];
pv->val = new char[];
pv->next = 0;
strcpy(pv->key, k);
strcpy(pv->val, v);
pend->next = pv;
pend = pv;
}
else
{
First(k,v);
}
}
catch(...)
{
CLastErrCodeMsg lastErr;
char szErrCodeNum[16];
wsprintf( szErrCodeNum, "%d", (DWORD)lastErr );
MessageBox( NULL, lastErr.GetString(), szErrCodeNum, MB_OK );
}
}
....
pcList *allStr = new pcList();
....
allStr->Add(sp,token);
allStr->Add(sp,token); <-- в методе Add возникает ошибка при повторном вызове
|
Почему при повторном вызове метода Add появляется ошибка?
Причем она не отлавливается блоком try{}catch(...){}. Почему? |
|
hooky-mars
Зарегистрирован: 03.01.2006 Сообщения: 39
|
Добавлено: Вт Апр 15 2008 10:18 Заголовок сообщения: |
|
|
Тогда другой вопрос.
Пошагово выполняю программу. Почемуто происходят какието скачки по коду на пример
Код: |
1 Len = 0;
2 rez = new pcList();
3 pcList *allStr = new pcList();
4 char *token = strtok(cmd,"/");
.......................
20 delete allStr;
|
А выполняется в таком порядке:
2,
20,
3,
4,
Т.е. первый шаг вообще не выполняется(остается Len= <мусор>), и странный скачек на 20 строку. Почему так? |
|