LINUX.ORG.RU

Присвоение значения указателю в С++


0

0

Нифига не понимаю.

Кусок программы:

struct SomeStruct{
  ...
};

struct Chain{
  SomeStruct* start;
  SomeStruct* finish;
};

Chain merge(Chain chain1, Chain chain2){
  Chain result;
  result.start = 0;
  result.finish = 0;
  if(result.finish)
  ...
  else
    result.start = chain1.start;
  return result;
}

версия gcc - 3.2.2
при отладке в DDD указателям не присваивается нулевое значение, остается то, которое было при предыдущем вызове merge. Хотя условие в скобках нулевое, проиходит переход на else, но присвоение значения опять не происходит.
Переменные локальные, что за фигня?

★★

По-моему проблема в DDD, кажет что-то не то.

hapchu ★★
() автор топика
Ответ на: комментарий от Murr

зачем?

Код после if не выполняется происходит переход на else, при том, что в голом gdb просмотр (bool)(result.finish) дает true. Но if(result.finish) идет на else. Какой-то бред, качаю gdb 6.0, у меня щас 5.3.

hapchu ★★
() автор топика
Ответ на: зачем? от hapchu

В том смысле, что я значение проверяю сразу после присвоения нуля, вообще код после if закомментировал, там пусто.

hapchu ★★
() автор топика
Ответ на: комментарий от hapchu

Ндааа. Вылечилось установкой gdb 6.0 :)

hapchu ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.