[Insight-users] smart pointers and local scope
Michael
michakuhn at gmx.ch
Wed Aug 18 10:12:03 EDT 2004
Hi,
if I properly understand
http://public.kitware.com/pipermail/insight-users/2003-September/004820.html
any memory referenced by smart pointers should be released when leaving
the local scope in which the smart pointers were defined. I've written
the following little program:
#include <iostream>
#include "itkImage.h"
#include "itkImageFileReader.h"
int main(int argc, char** argv)
{
const unsigned int Dimension = 2;
typedef unsigned char PixelType;
typedef itk::Image<PixelType, Dimension> ImageType;
typedef itk::ImageFileReader<ImageType> ReaderType;
char ch;
std::cout << "before block" << std::endl;
std::cin >> ch;
{ // local scope
ReaderType::Pointer reader = ReaderType::New();
if (argc < 2) {
std::cout << "filename required." << std::endl;
return -1;
}
reader->SetFileName(argv[1]);
try {
reader->Update();
} catch (itk::ExceptionObject &e) {
std::cout << e << std::endl;
return -1;
}
std::cout << "after update: " << std::endl;
std::cin >> ch;
}
std::cout << "after block" << std::endl;
std::cin >> ch;
return 0;
}
When compiling it with Visual Studio 6 under Windows and looking at the
memory usage at the points asking for input everything looks ok: The
memory usage is about 1.5 MB before the local scope, about 7.8 MB after
the update call and about 2.2 MB after leaving the local scope.
Obviously, the image data has been released (I used the
BrainProtonDensitySliceBorder20.png image, which I upscaled by a factor
10 (in each direction)). Except of the (small) difference of 0.7 MB the
same amount of memory is used before and after the local scope (where do
the 0.7 MB come from?).
When I compile the program with gcc under SunOS, however, the memory
usage behaves differently. "top" shows the following values:
before block: SIZE 4888K, RES 1672K
after update: SIZE 10M, RES 8520K
after block: SIZE 10M, RES 8520K
It seems to me, that the memory of the smart pointers was not freed
after leaving the local scope. Why is the behaviour different from the
one in Windows?
Thanks,
Michael
More information about the Insight-users
mailing list