Index: tol/bbasic/cor.cpp
===================================================================
--- tol/bbasic/cor.cpp	(revision d337602d0ab4a22c0dd8866855eb2e8da10cbdec)
+++ tol/bbasic/cor.cpp	(revision 12a919e687ccfd02a25998cdde2c723b58db35d5)
@@ -56,2 +56,44 @@
     return(nCore_);
 }
+
+
+BCore::MemAssignInfo::MemAssignInfo(BCore* address)
+{
+  SetAddress(address);
+}
+
+void BCore::MemAssignInfo::SetAddress(BCore* address)
+{
+  address_ = address;  
+  if(address)
+  {
+    size_    = address_->GetSizeOf();
+    pageNum_ = address_->GetPageNum();
+    assert(size_);
+  }
+  else
+  {
+    size_    = 0;
+    pageNum_ = 0;
+  }
+}
+
+short BCore::MemAssignInfo::IsAssigned() 
+{ 
+  if(!address_) { return(0); }
+  else if(!size_) { return(0); }
+  { 
+    BFixedSizeMemoryBase* hnd = BFixedSizeMemoryBase::Instance(size_);
+    if(!hnd) { return(-1); }
+    else     { return(hnd->IsAssigned(address_,pageNum_)); }
+  }
+}
+
+void BCore::MemAssignInfo::SafeDestroy()
+{
+  if(IsAssigned()>0) 
+  { 
+    address_->Destroy(); 
+    address_ = NULL;
+  }
+}
Index: tol/bbasic/tol_bcore.h
===================================================================
--- tol/bbasic/tol_bcore.h	(revision d337602d0ab4a22c0dd8866855eb2e8da10cbdec)
+++ tol/bbasic/tol_bcore.h	(revision 12a919e687ccfd02a25998cdde2c723b58db35d5)
@@ -62,46 +62,15 @@
     virtual BFixedSizeMemoryBase* GetMemHandler() const { return(NULL); }
     virtual unsigned short  GetPageNum   () const { return(0); }
+    virtual size_t GetSizeOf() const { return(0); } 
     struct TOL_API MemAssignInfo
     {
       BCore*                address_;
+      size_t                size_;
       unsigned short        pageNum_;
 
-      MemAssignInfo(BCore* address)
-      {
-        SetAddress(address);
-      }
-
-      void SetAddress(BCore* address)
-      {
-        address_ = address;  
-        if(address)
-        {
-          pageNum_    = address_->GetPageNum();
-        }
-        else
-        {
-          pageNum_    = 0;
-        }
-      }
-
-      short IsAssigned() 
-      { 
-        if(!address_) { return(0); }
-        else 
-        { 
-          BFixedSizeMemoryBase* hnd = BFSMSingleton<sizeof(*address_)>::Handler();
-          if(!hnd) { return(-1); }
-          else     { return(hnd->IsAssigned(address_,pageNum_)); }
-        }
-      }
-
-      void SafeDestroy()
-      {
-        if(IsAssigned()>0) 
-        { 
-          address_->Destroy(); 
-          address_ = NULL;
-        }
-      }
+      MemAssignInfo(BCore* address);
+      void SetAddress(BCore* address);
+      short IsAssigned();
+      void SafeDestroy();
     };
 #else
Index: tol/bbasic/tol_bfsmem.h
===================================================================
--- tol/bbasic/tol_bfsmem.h	(revision d337602d0ab4a22c0dd8866855eb2e8da10cbdec)
+++ tol/bbasic/tol_bfsmem.h	(revision 12a919e687ccfd02a25998cdde2c723b58db35d5)
@@ -63,4 +63,8 @@
     return(BFSMSingleton<sizeof(ANY_)>::Handler()); \
   } \
+  size_t GetSizeOf() const \
+  { \
+    return(sizeof(ANY_)); \
+  } \
   unsigned short GetPageNum() const \
   { \
