проблемы с памятью С++

moga80

как можно средствами компилятора отловить, где происходит, например, переполнение массива и тп?

yolki

Переполнение массива - это как? выход за границу? В разных компиляторах по-разному. в BCB Range Checking вроде есть.

moga80

да, выход за границу, видимо. а BCB-это что?

yolki

Borland C++ Builder

moga80

а-точно

moga80

а не знаешь точно, как этот Range Checking настроить?

yolki

Project Options -> Compiler, там вроде галка должна быть.
Хотя я не уверен.
Вот в Borland Delphi такая штука есть.
скорее всего должна быть и там.

moga80

спасибо:)
но мне бы все-же хотелось в MVS такую опцию найти...

yolki

MVS - што за зверь? MSVC штоль?
там к нему какие-то приложения есть, никогда не пользовал..

okunek

>MVS
Microsoft Visual Studio

yolki

это я потом догадался. у меня "микрософт" и "С++" ассоциируется только с MSVC.
VS для меня - это не только С(++ но и всякие фокспро и вб

Lisiza

Без всяких уродских BCB. Ставишь себе NuMega BoundsChecker, и вперед, хоть под билдером, хоть под VisualC++, хоть под (назови-свой-любимый-компилятор).

moga80

а этот NuMega BoundsChecker есть у кого-нибудь, кроме , который в оффлайн сейчас? ( кстати, у него NuMega BoundsChecker Delphi 6.5-это только для Delphi, или для всего сойдет?)

evgen5555

Compuware Devpartner этого не может?

moga80

не знаю...пытаюсь установить его, но не хватает еще Microsoft Windows Script Debugger, которого в сети нет

kamputer

ы?

moga80

спасибо сейчас попробую применить

moga80

а ты не можешь вкратце рассказать, как им пользоваться ? там просто куча всяких описаний на английском...

psihodog

Это не то, что тебе нужно. просто "прикалывается".
Используй boundschecker, а лучше вообще не юзай массивы в С++ там где они могут переполниться .

okunek

массив он на то и есть, чтобы за его границы писать

moga80

да нет, ссылка cantora нормальная, просто для установки Compuware Devpartner требовался Script Debugger. Кстати, этот Compuware Devpartner как-то не очень ловит, или я просто не так им пользуюсь.
А BoundCheckerа в сети нет

kamputer

>Это не то, что тебе нужно. просто "прикалывается".
Над шутками моими никто не смеёцо. Когда пишу всерьёз - говорят, прикалываюсь. Ниибаца я перверт.

kamputer

>Кстати, этот Compuware Devpartner как-то не очень ловит, или я просто не так им пользуюсь.
А как ты им пользуешься?

moga80

запускаю exe файл моей программы в Error Detection...так?

kamputer

Там сначала надо что-то типа "Build with bound checker" в менюшке нажать.

moga80

а в какой менюшке? В VisualStudio?

kamputer

Упс. Ну да, в MSVC

moga80

что-то я такого там не вижу

voronina

как можно средствами компилятора отловить, где происходит, например, переполнение массива и тп?
зачем дополнительный геморой с софтом?
IMHO стоит использовать trace сообщения сразу при написании кода. помогает находить ошибки, связанные не только с памятью.
З.Ы. программер лучший дебагер.

Olyalyau

В C++ есть std::vector, метод at которого проверяет выход за границу массива.
Вообще, в C++ порядочный способ обращения с памятью -- поручить это делать шаблону.

moga80

да я знаю..просто для переписывания кода много времени потребуется, вот я и подумала, что если в VS есть опция отслежтвания таких ошибок (насколько мне известно, такая есть в фортране, например то так будет проще и быстрее
Оставить комментарий
Имя или ник:
Комментарий: