第一个 0 表示这个数是 八进制
第二个 6 表示文件拥有者同组用户有读写权限,但没有执行权限
第三个 6 表示其它用户有读写权限,但没有执行权限
6 的 二进制就是 0110
第 1 位在权限中总是为 0
第 2 位为 0 表示文件不可以被读, 为 1 表示可以被读
第 3 位为 0 表示文件不可以被写, 为 1 表示可以被写
第 4 位为 0 表示文件不可以被执行, 为 1 表示可以被执行
这个跟系统有关系。如果数组越界是否破坏了原来的函数调用栈,或者访问到了不可访问的地址,或者写了只有读权限的地址,那肯定会出错了。
但是如果你的数组的越界只是访问到了原本就没有被分配的内存,那么就不会出错,但是不能保证这么下去一直不会错。
emmm,我记得microsoft三件套就有这个特性给一个从CSDN找到的代码
#include windows.h//这里自己加上括号
VOID ManagerRun(LPCSTR exe,LPCSTR param,INT nShow=SW_SHOW)
{ //注意:会跳出提示。
SHELLEXECUTEINFO ShExecInfo
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO)
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS
ShExecInfo.hwnd = NULL
ShExecInfo.lpVerb = "runas"
ShExecInfo.lpFile = exe
ShExecInfo.lpParameters = param
ShExecInfo.lpDirectory = NULL
ShExecInfo.nShow = nShow
ShExecInfo.hInstApp = NULL
BOOL ret = ShellExecuteEx(&ShExecInfo)
//等不及了,不等了。
CloseHandle(ShExecInfo.hProcess)
return
}
int main(int argc,char *argv[])
{
if(argc == 1) //初次运行,即双击EXE
{
ShowWindow(GetConsoleWindow(),SW_HIDE)
ManagerRun(argv[0],"2")
return 1
}else if(argc == 2) //再次运行,即上面那个ManagerRun
{
/*你的程序主代码在此*/
}
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)