Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Visual Studio 2008中的System.AccessViolationException异常 //diskbin.cpp:主项目文件。 #包括“stdafx.h” #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,char*argv[]) { //代码 如果(stat(“key.pc.db”、&filek)==0) sizek=filek.st_size; if(stat(“seek.pc.db”、&files)==0) 大小=files.st\u大小; sizek=sizek/sizeof(int); 尺寸=尺寸/尺寸(整数); 整数i、最小值、最大值、中间值; int*s=新的int[尺寸]; 整数*命中=新整数[大小]; //代码 }_C++_Visual Studio 2008_Filestream - Fatal编程技术网

C++ Visual Studio 2008中的System.AccessViolationException异常 //diskbin.cpp:主项目文件。 #包括“stdafx.h” #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,char*argv[]) { //代码 如果(stat(“key.pc.db”、&filek)==0) sizek=filek.st_size; if(stat(“seek.pc.db”、&files)==0) 大小=files.st\u大小; sizek=sizek/sizeof(int); 尺寸=尺寸/尺寸(整数); 整数i、最小值、最大值、中间值; int*s=新的int[尺寸]; 整数*命中=新整数[大小]; //代码 }

C++ Visual Studio 2008中的System.AccessViolationException异常 //diskbin.cpp:主项目文件。 #包括“stdafx.h” #包括 #包括 #包括 #包括 #包括 #包括 使用名称空间std; int main(int argc,char*argv[]) { //代码 如果(stat(“key.pc.db”、&filek)==0) sizek=filek.st_size; if(stat(“seek.pc.db”、&files)==0) 大小=files.st\u大小; sizek=sizek/sizeof(int); 尺寸=尺寸/尺寸(整数); 整数i、最小值、最大值、中间值; int*s=新的int[尺寸]; 整数*命中=新整数[大小]; //代码 },c++,visual-studio-2008,filestream,C++,Visual Studio 2008,Filestream,当我在Visual Studio 2008中运行此程序时,我没有收到任何错误,但当我运行cmd时,它会打开然后关闭,然后出现一个弹出窗口,其中显示: diskbin.exe中发生“System.AccessViolationException”类型的未处理异常 其他信息:试图读取或写入受保护的内存。这通常表示其他内存已损坏。“可能是什么问题?”?我没有正确分配s和击球吗 谢谢 它正在崩溃,因为您正在使用未初始化的变量: // diskbin.cpp : main project file. #

当我在Visual Studio 2008中运行此程序时,我没有收到任何错误,但当我运行cmd时,它会打开然后关闭,然后出现一个弹出窗口,其中显示: diskbin.exe中发生“System.AccessViolationException”类型的未处理异常 其他信息:试图读取或写入受保护的内存。这通常表示其他内存已损坏。“可能是什么问题?”?我没有正确分配s和击球吗


谢谢

它正在崩溃,因为您正在使用未初始化的变量:

// diskbin.cpp : main project file.

#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <fstream>
#include <conio.h>
#include <stdio.h>
#include <sys/stat.h>

using namespace std;

int main( int argc, char *argv[] )
{
  //code

  if(stat("key.pc.db", &filek) ==0 )
      sizek=filek.st_size;
  if(stat("seek.pc.db", &files) ==0 )
      sizes=files.st_size;

  sizek=sizek/sizeof(int);
  sizes=sizes/sizeof(int);
  int i,min,max,mid;
  int *s=new int[sizes];
  int *hit=new int[sizes];

  //code
}
如果stat()失败,则使用未初始化的sizek。 根据未初始化的内存,下一条语句将崩溃:

  int       sizes, sizek;
  struct stat files, filek;
  ofstream ofs;

  if(stat("key.pc.db", &filek) ==0 )
      sizek=filek.st_size;
  if(stat("seek.pc.db", &files) ==0 )
      sizes=files.st_size;

  sizek=sizek/sizeof(int);
  sizes=sizes/sizeof(int);
因为
size
可以是负数,也可以是非常大的数字,新的将失败


检查stat()返回的错误,尽管可能找不到文件
key.pc.db
,导致函数失败。

要么没有收到任何错误,要么收到错误。选择一个,进行一些调试。程序在哪一行崩溃?@Martino I的意思是它没有在错误窗口中显示任何错误。它显示0个错误和0个警告。所以你说它正在编译,但崩溃了。。。它在哪里崩溃?在
int*s=newint[size]int *s=new int[sizes];