契约与防御性编程的疑问
K120H 2006-01-05 09:43:28 UINT CFile::Read(void* lpBuf, UINT nCount)
{
ASSERT_VALID(this);
ASSERT(m_hFile != (UINT)hFileNull);
if (nCount == 0)
return 0; // avoid Win32 "null-read"
ASSERT(lpBuf != NULL);
ASSERT(AfxIsValidAddress(lpBuf, nCount));
DWORD dwRead;
if (!::ReadFile((HANDLE)m_hFile, lpBuf, nCount, &dwRead, NULL))
CFileException::ThrowOsError((LONG)::GetLastError());
return (UINT)dwRead;
}
//这是MFC中的文件读操作的代码.
//ASSERT是DEBUG下的断言,在RELEASE状态假如lpBuf==NULL,程序会不会出现问题.lpBuf是不是
//应该防御NULL错误.
能不能解释一下什么时候可以使用ASSERT,谢谢!