怎么做指针输入参数检查
如何做指针输入参数检查?
主要是防止在函数体内对未分配的内存空间进行操作用的,怎么知道输入的指针参数分配的空间大小呢(Sizeof显然不行)?
或者有没有其他办法可以避免这种内存错误?(增加参数来标识指针大小的方法本人考虑过,但是觉得有点麻烦,每次都得要求使用函数的用户写一个这样的参数,个人觉得不太合理,不知道大家是不是用的这个办法?)
------解决方案--------------------
可以参考api的做法,需要一个参数指定缓冲区大小。
例如
int GetWindowText( HWND hWnd,
LPTSTR lpString,
int nMaxCount《=======大小
);
------解决方案--------------------
用vector取代指针!
------解决方案--------------------
给一个指针的确无法判断其有效性,这就是为什么给出指针往往还要给出该指针指向区域的大小做为后面一个参数的原因。
在C/C++里面编译时是不会检查指针有效性的,所以才会出现溢出,或者内存访问异常的错误。唯一的方法就是带入size做为参数。或者带入一个类或者结构,其中除了指针这个变量以外还能得到空间区域的大小。
主要是防止在函数体内对未分配的内存空间进行操作用的,怎么知道输入的指针参数分配的空间大小呢(Sizeof显然不行)?
或者有没有其他办法可以避免这种内存错误?(增加参数来标识指针大小的方法本人考虑过,但是觉得有点麻烦,每次都得要求使用函数的用户写一个这样的参数,个人觉得不太合理,不知道大家是不是用的这个办法?)
------解决方案--------------------
可以参考api的做法,需要一个参数指定缓冲区大小。
例如
int GetWindowText( HWND hWnd,
LPTSTR lpString,
int nMaxCount《=======大小
);
------解决方案--------------------
用vector取代指针!
------解决方案--------------------
给一个指针的确无法判断其有效性,这就是为什么给出指针往往还要给出该指针指向区域的大小做为后面一个参数的原因。
在C/C++里面编译时是不会检查指针有效性的,所以才会出现溢出,或者内存访问异常的错误。唯一的方法就是带入size做为参数。或者带入一个类或者结构,其中除了指针这个变量以外还能得到空间区域的大小。