Moharram
چهارشنبه 11 دی 1387, 08:28 صبح
سلام
من یه آرایه 1000 مگابایتی رو به عنوان یک بافر حلقوی استفاده میکنم، و با اومدن دیتا اول تو این بافر کپیش میکنم تا فرصت نوشتن تو هارد بشه...
اما وقتی آرایه تا یه حجمی مثلا 300 مگابایت پر میشه، Error حافظه ای میده... انگار که آرایه هنوز Allocate نشده باشه... در حالیکه آرایه کاملا استاتیکه...
یه چیز دیگه هم اینکه این برنامه تا چند وقت پیش کار میکرد و مشکلی نداشت، و یه دفعه اینجوری شده...!
در ضمن تو یه سیستم دیگه مشکل ندارم...
آیا اشکال میتونه سخت افزاری باشه... از RAM ، MotherBoard یا چیزه دیگه
مثال زیر تقریبا اون چیزیه که اتفاق می افته...
#define HugeArraySize 1000*1024*1024
#define tempSize 10*1024*1024
DWORD HugeArray[HugeArraySize/4];
DWORD temp[tempSize/4];
DWORD i=0,j=0;
for(i=0;i<tempSize/4;i++)
temp[i]=i;
for(i=0;i<100;i++)
{
memcpy((DWORD*)(HugeArray+j),(DWORD*)temp,tempSize );
j += tempSize/4;
}
همونطور که معلومه یک آرایه 10 مگابایتی رو تو یک آرایه 1000 مگابایتی کپی میکنیم و جلو میریم...
ولی این کد در سیستم مشکل دار فقط 5، 6 بار میتونه 10 مگابایت کپی کنه ولی تو یه سیستم دیگه درست کار میکنه...
این رو اضافه کنم که RAM سیستمها به اندازه کافی بزرگه ...
با تشکر
من یه آرایه 1000 مگابایتی رو به عنوان یک بافر حلقوی استفاده میکنم، و با اومدن دیتا اول تو این بافر کپیش میکنم تا فرصت نوشتن تو هارد بشه...
اما وقتی آرایه تا یه حجمی مثلا 300 مگابایت پر میشه، Error حافظه ای میده... انگار که آرایه هنوز Allocate نشده باشه... در حالیکه آرایه کاملا استاتیکه...
یه چیز دیگه هم اینکه این برنامه تا چند وقت پیش کار میکرد و مشکلی نداشت، و یه دفعه اینجوری شده...!
در ضمن تو یه سیستم دیگه مشکل ندارم...
آیا اشکال میتونه سخت افزاری باشه... از RAM ، MotherBoard یا چیزه دیگه
مثال زیر تقریبا اون چیزیه که اتفاق می افته...
#define HugeArraySize 1000*1024*1024
#define tempSize 10*1024*1024
DWORD HugeArray[HugeArraySize/4];
DWORD temp[tempSize/4];
DWORD i=0,j=0;
for(i=0;i<tempSize/4;i++)
temp[i]=i;
for(i=0;i<100;i++)
{
memcpy((DWORD*)(HugeArray+j),(DWORD*)temp,tempSize );
j += tempSize/4;
}
همونطور که معلومه یک آرایه 10 مگابایتی رو تو یک آرایه 1000 مگابایتی کپی میکنیم و جلو میریم...
ولی این کد در سیستم مشکل دار فقط 5، 6 بار میتونه 10 مگابایت کپی کنه ولی تو یه سیستم دیگه درست کار میکنه...
این رو اضافه کنم که RAM سیستمها به اندازه کافی بزرگه ...
با تشکر