如何判断一指针所指向的内存有效性??
解决方案 »
- 请教一个简单的问题
- 怎么调试多线程程序??
- 怎样屏蔽掉ComboBox的回车操作?
- 请大家留下自已的MSN以便互相交流和沟通~!
- 怎样将CString转化为BYTE类型......在线等!
- 如何通过程序来取局域网中一台机子上指定文件呢?
- 因工作关系,需要写一个OCX,在其中需要调出word文档,对word修改后进行保存入库。大家给点资料好吗?
- CListCtrlEx 头文件在那里?
- 如何可以在Window 2000的Computer Management Consule中加入自己的程序
- 多线程中的对话框问题
- 在线等!MSDN中所有类的层次图在什么地方呀?在线等,问题解决马上给分~~!
- 如何在dialog中设置坐标系,并在其中任意两点画直线?
CONST VOID *lp, // memory address
UINT_PTR ucb // size of block
);
具体语法看MSDN
p = NULL;
...
p = new char[100];
....
delete[] p;
p = NULL;使用分配的内存之前一定要
if(p !=NULL) //p 是指向一块内存区的指针
{
...
}
看了从网上down的程序,很少看到用某个函数去判断某块内存是否可用
--------------------------------------------------------------------一家之言!!
一般在开发很少去检查一个指针地址的有效性,
不过在MFC的原码中,这样的地方还是很多的。
指针地址检验是经常的事,使用指针有很多好处,所以不可能不检验哈
不同的类有不同的指针检验,比如:SOCKET == INVALID_SOCKET, byte == NULL
只要在使用的时候注意,就不需要使用专门的函数了
IsBadReadPtr() OR IsBadWritePtr() 我试了一下无用;
const void* lp,
UINT nBytes,
BOOL bReadWrite = TRUE
);MSDN的例子
// Allocate a 5 character array, which should have a valid memory address.
char *array = new char[5];// Create a null pointer, which should be an invalid memory address.
char *null = (char *)0x0;ASSERT(AfxIsValidAddress(array, 5));
ASSERT(!AfxIsValidAddress(null, 5));
char * lpDesData=new char[100];
if(!AfxIsValidAddress(lpDesData,200,TRUE))
{
MessageBox("内存错误");
......
}
......问题是他没报错;
const int nSize = 100;
char* lpDesData=new char[nSize];
if(!AfxIsValidAddress(lpDesData, sizeof(char)*nSize/sizeof(BYTE), TRUE))
{
MessageBox("内存错误");
}
这是一个有效地址当然不报错
const int nSize = 100;
char* lpDesData=new char[nSize];if(!AfxIsMemoryBlock((void*)lpDesData, sizeof(char)*nSize/sizeof(BYTE)))
{
MessageBox("内存错误");
}
我之所以这么做是因为,内存我是在其它地方分配的,但是在写操作时,担心size不够
问题是我在用这块内存时,我只知道我要用的字节数,to:: SoLike()
非常谢谢你,但可否还有其它函数;
最近忽然觉得它有点可爱了~~~~~~~~~