Адреса, предоставленные для утечки, являются не адресами кода, а местоположениями данных.К сожалению, нелегко увидеть, где были расположены эти местоположения.
Учитывая, что память могла быть выделена где угодно (помните, что указатели могут быть переданы, псевдонимы и т. Д.) Единственный способ проверить на утечки (т.е.выделенная память, которая не освобождается) - это когда программа выходит.Поэтому, когда ваша программа завершает работу, cuda-memcheck проверяет фрагменты памяти, которые были выделены, но не освобождены, и дает вам адрес фрагмента памяти, но не имеет возможности связать его с тем, когда он был выделен.
Вместо этого проще всего вручную проверить ваш код и убедиться, что все вызовы cudaMalloc()
имеют соответствующий вызов cudaFree()
.Однако это может быть довольно трудоемким процессом ...