Правильное избавление от неповрежденной структуры - PullRequest
0 голосов
/ 09 мая 2018

Здравствуйте, этот вопрос является продолжением этого вопроса . Ниже приведена краткая версия кода, который загружает данные в структуру. Библиотека HDF5DotNet находится здесь с использованием 32-битной версии с vs2015. Мой вопрос, будет ли MyStruct утечка памяти, когда SomeCallerClass вызовет HDF5GetSubGroups?

using HDF5DotNet;
namespace CommonClass
{
        public class HDF5FileReader
        {
             public static List<string> HDF5GetSubGroups(string filePath)
             {
                  var returnList = new List<string>();
                  //... some HDF5 instantiating -- commented out for brevity
                  var myStruct = new MyStruct[numberOfThingsToRead];
                  H5A.read(someAttribute, someAttributeType, new H5Array<MyStruct>(myStruct));
                  string myStructVariableString = IntPtrToString(myStruct[0].intPtr);
                  returnList.Add(myStructVariableString);
                  //... closing some HDF5 instantiating -- commented out for brevity
                  return returnList
             }

         private string IntPtrToString(IntPtr ipp)
         {
              string s = Marshal.PtrToStringAnsi(ipp)
              //need to free ipp?
              return s;
         }
     }

     public struct MyStruct
     {
          public Int int1;
          public IntPtr intPtr;
     }
}

namespace CallerClass
{
     public class SomeCallerClass()
     {
         string someFilePath = "Path\To\HDF5File.h5"
         var stringList = HDF5FileReader.HDF5GetSubGroups(someFilePath)
         //Do Something with StringList -- add to observablecollection
     }

     public class UnloadingSomeCallerClass()
     {
          //Clear the observablecollection
     }

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