Uso de Memoria de Aplicación
Hola, que tal, tengo una duda muy grande
El tema es así, recorro un directorio, y voy añadiendo los archivos a un ListView, pero el tema que se presenta, es que para calcular el tamaño del archivo, utilizo la siguiente linea:
dwLength = (fd.nFileSizeHigh * (MAXDWORD+1)) + fd.nFileSizeLow;
Que esta dentro de un bucle DO, el tema es que cuando comento la linea para que no calcule el tamaño, mi aplicación usa en memoria alrededor de 2-3MB, pero cuando calcula el tamaño de los archivos, el tamaño incrementa a 10 MB, tan solo por hacer el calculo.
La cantidad de Archivos es alrededor de 1500 y estoy usando Visual C 8 (2005)
¿Me podrías explicar a que se debe?
Muchas Gracias
El code que uso, es algo como esto:
WIN32_FIND_DATA fd;
HANDLE hFind;
//ULONGLONG dwLength;
long dwLength;
CString path;
path = = _T("C:\\");
hFind = FindFirstFile(path + _T("*.*"), &fd);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
if((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
{
if(fd.cFileName == CString(_T("..")) || fd.cFileName == CString(_T(".")))
{
continue;
}
// something
}
else
{
dwLength = (fd.nFileSizeHigh * (MAXDWORD+1)) + fd.nFileSizeLow;
// somthing
}
}
while(FindNextFile(hFind, &fd));
FindClose(hFind);
}
El tema es así, recorro un directorio, y voy añadiendo los archivos a un ListView, pero el tema que se presenta, es que para calcular el tamaño del archivo, utilizo la siguiente linea:
dwLength = (fd.nFileSizeHigh * (MAXDWORD+1)) + fd.nFileSizeLow;
Que esta dentro de un bucle DO, el tema es que cuando comento la linea para que no calcule el tamaño, mi aplicación usa en memoria alrededor de 2-3MB, pero cuando calcula el tamaño de los archivos, el tamaño incrementa a 10 MB, tan solo por hacer el calculo.
La cantidad de Archivos es alrededor de 1500 y estoy usando Visual C 8 (2005)
¿Me podrías explicar a que se debe?
Muchas Gracias
El code que uso, es algo como esto:
WIN32_FIND_DATA fd;
HANDLE hFind;
//ULONGLONG dwLength;
long dwLength;
CString path;
path = = _T("C:\\");
hFind = FindFirstFile(path + _T("*.*"), &fd);
if(hFind != INVALID_HANDLE_VALUE)
{
do
{
if((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
{
if(fd.cFileName == CString(_T("..")) || fd.cFileName == CString(_T(".")))
{
continue;
}
// something
}
else
{
dwLength = (fd.nFileSizeHigh * (MAXDWORD+1)) + fd.nFileSizeLow;
// somthing
}
}
while(FindNextFile(hFind, &fd));
FindClose(hFind);
}
1 respuesta
Respuesta
1