Утечка памяти в процессоре 32-битного процессора и отсутствие утечки в процессоре 64-битного процессора - PullRequest
0 голосов
/ 31 января 2011

У меня есть код C, который работает без какой-либо утечки памяти в 64-битном процессоре CPU, но показывает утечку в 32-битном процессоре.Что может быть причиной этого.GCC 4.1.2 - это компилятор, а Debian - операционная система.

Ответы [ 3 ]

6 голосов
/ 31 января 2011

Звучит странно.Но это слишком расплывчато, чтобы ответить, для меня.Поскольку вы работаете в Linux, я бы порекомендовал вам просто запустить 32-битную версию под Valgrind с максимальным отслеживанием памяти.

3 голосов
/ 31 января 2011

Имейте в виду, что, хотя ваш собственный код такой же, вы все равно запускаете две разные программы - есть разные библиотеки времени выполнения, с которыми они связаны. Возможно, что какой-то аспект вашего кода вызывает утечку в одной среде выполнения, а не в другой. Если это так, это может произойти одним из двух способов:

а) Вы ничего не сделали плохо. Проблема в 32-разрядной среде выполнения.

или

b) У вас что-то не так, но что-то оборонительное в 64-битной среде выполнения маскирует его.

1 голос
/ 31 января 2011

Действительно трудно сказать без кода. Вещи, которые могут пойти не так

  • неявные преобразования. в большинстве мест узкие типы данных преобразуются в signed или unsigned. Если у вас есть неявные предположения относительно их ширины, у вас могут быть все виды вещей: переполнение, неопределенное поведение, специфичное для компилятора поведение
  • отсутствуют прототипы функций. oldish C предполагает, что функция, которую он не знает, возвращает int. Если в действительности он возвращает указатель (например), у вас проблемы.
  • указатель на int преобразование (или наоборот)

Ваш компилятор довольно старый. Вы, вероятно, должны попытаться получить что-то более свежее, если это возможно, или попробовать что-то другое, например clang.

Скомпилируйте все предупреждения на -Wall -Wextra ... и работайте над своим кодом, пока он вообще не будет предупрежден.

Если ваша проблема не устранена, запустите ее с valgrind, как предложено @unwind.

Тогда с какой-то конкретной проблемой здесь, чтобы мы могли вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...