Название: Заполнить используемую приложением память "хламом" Отправлено: ltise от Январь 22, 2011, 22:50 Добрый день!
подскажите плиз как заполнить выделяемую приложению память случайными значениями "хламом" ? Проблема в следующем - если где-то в проекте забыл проинициализировать поле, то на некоторых PC (почему-то у меня так) значение не инициализированного поля в классе (например int) = 0... и вроде все пашет как надо. Когда приложение собирается на маке, то значение оказывается не определенным .. и все валица... т.е. class SomeClass { SomeClass(){} void outIndex() { qDebug() << index; } private: int index; } Забыл проинициализировать в конструкторе index. На PC (по крайней мере на моем в Debug) выводится всегда "0"... Собираю на маке - выводится все что угодно... B итоге, собираю на РС - все пашет, собираю на маке - не пашет :) Название: Re: Заполнить используемую приложением память "хламом" Отправлено: Sancho_s_rancho от Январь 22, 2011, 23:09 Можно в списке инициализации, можно в конструкторе. Ну а для int можно и прямо на месте.
Название: Re: Заполнить используемую приложением память "хламом" Отправлено: ltise от Январь 22, 2011, 23:21 Можно в списке инициализации, можно в конструкторе. Ну а для int можно и прямо на месте. Вопрос в другом - если я забыл проинициализировать поле ?у меня всегда в этом поле будет значение = 0.. мне нужно сделать так, что-бы значение, если забыл проинициализировать, было неопределено, случайное...что-бы можно было поймать косяк на РС Название: Re: Заполнить используемую приложением память "хламом" Отправлено: Akon от Январь 22, 2011, 23:56 Ну если экземляры классов создаются через operator new(), то можешь переопределить его и инициализировать выделенную память случайным образом. Но лучше не забывать инициализацию.
Название: Re: Заполнить используемую приложением память "хламом" Отправлено: alexman от Январь 23, 2011, 00:24 Так это в debug нулями? В release скорее всего будет "хлам".
Название: Re: Заполнить используемую приложением память "хламом" Отправлено: alexman от Январь 23, 2011, 00:26 А вообще Valgrind используй! Но это под Linux.
Название: Re: Заполнить используемую приложением память "хламом" Отправлено: ltise от Январь 23, 2011, 00:29 Так это в debug нулями? В release скорее всего будет "хлам". да, надо в debug получить хламНазвание: Re: Заполнить используемую приложением память "хламом" Отправлено: ltise от Январь 23, 2011, 01:12 А вообще Valgrind используй! Но это под Linux. Может вообще имеет смысл переехать под линух ? :)Совместимость с маком от этого увеличится ? Название: Re: Заполнить используемую приложением память "хламом" Отправлено: Fat-Zer от Январь 23, 2011, 11:17 А вообще Valgrind используй! Но это под Linux. Может вообще имеет смысл переехать под линух ? :)Совместимость с маком от этого увеличится ? Из своего опыта: ХРюшка+MinGW оставляют переменные не инициализированными. ЗЫ: я всегда за переход на linux ;) Название: Re: Заполнить используемую приложением память "хламом" Отправлено: Igors от Январь 23, 2011, 11:34 У MSVC есть run-time проверка на чтение неинициализированных переменных. Может лучше ее включить чем возиться с хламом?
Название: Re: Заполнить используемую приложением память "хламом" Отправлено: brankovic от Январь 23, 2011, 12:47 А вообще Valgrind используй! Но это под Linux. Может вообще имеет смысл переехать под линух ? :)Совместимость с маком от этого увеличится ? Не знаю про мак, но когда пишу на кьют, то под линукс, а виндовс держу в виртуальной машине, там тестирую дополнительно. Наверное и мак ос туда можно запихнуть. Привык я просто к инструментам линукса, валгринд опять же. Но вообще-то проблема преувеличена. Надо просто переменные инициализировать ;) Название: Re: Заполнить используемую приложением память "хламом" Отправлено: Akon от Январь 23, 2011, 13:13 У MSVC есть run-time проверка на чтение неинициализированных переменных. Может лучше ее включить чем возиться с хламом? Для членов классов это не работает. Название: Re: Заполнить используемую приложением память "хламом" Отправлено: Fat-Zer от Январь 23, 2011, 13:36 Но вообще-то проблема преувеличена. Надо просто переменные инициализировать ;) У ТС, как я понял как раз и проблема, как проще отлавливать переменные, которые забыл инициализировать.Название: Re: Заполнить используемую приложением память "хламом" Отправлено: ltise от Январь 23, 2011, 13:43 Цитировать Не знаю про мак, но когда пишу на кьют, то под линукс, а виндовс держу в виртуальной машине, там тестирую дополнительно. Наверное и мак ос туда можно запихнуть. Привык я просто к инструментам линукса, валгринд опять же. пробую andLinuxЦитировать Но вообще-то проблема преувеличена. Надо просто переменные инициализировать ;) конечно надо :) а если где-то забыл ? и все зашибись пашет ? |