public void TouchSegment(int segmentNo)
{
CheckSegmentNo(segmentNo);
if(segments[segmentNo] == IntPtr.Zero)
{
var allocSeg = AllocateSegment();
var originalPointer = (long)allocSeg;
var alignedPointer = (IntPtr)((originalPointer + Alignment) & ~(Alignment - 1));
segments[segmentNo] = alignedPointer;
this.NoisyLog(string.Format("Segment no {1} allocated at 0x{0:X} (aligned to 0x{2:X}).",
allocSeg.ToInt64(), segmentNo, alignedPointer.ToInt64()));
originalPointers[segmentNo] = allocSeg;
MemSet(allocSeg, (byte)0, SegmentSize);
var segmentTouched = SegmentTouched;
if(segmentTouched != null)
{
segmentTouched(segmentNo);
}
}
}