Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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++;字符向量 我是C++新手,我在这个新语言上遇到了一些问题: 我找不到我在内存方面做得不好的地方,因为我从来没有使用过一种不能自行管理内存的语言。 我希望有人能帮助我_C++ - Fatal编程技术网

访问冲突读取位置C++;字符向量 我是C++新手,我在这个新语言上遇到了一些问题: 我找不到我在内存方面做得不好的地方,因为我从来没有使用过一种不能自行管理内存的语言。 我希望有人能帮助我

访问冲突读取位置C++;字符向量 我是C++新手,我在这个新语言上遇到了一些问题: 我找不到我在内存方面做得不好的地方,因为我从来没有使用过一种不能自行管理内存的语言。 我希望有人能帮助我,c++,C++,错误为“访问冲突读取位置” 对不起,我英语不好,我是乌拉圭人 dopartial: test edx,1 jz short doword ***mov al,[edx]*** //here i get the error 第二部分: 测试edx,1 jz short doword ***mov al,[edx]***//这里我得到了错误 int-CalcularCantPalabras(char*str,int-lar

错误为“访问冲突读取位置”

对不起,我英语不好,我是乌拉圭人

dopartial: test edx,1 jz short doword ***mov al,[edx]*** //here i get the error 第二部分: 测试edx,1 jz short doword ***mov al,[edx]***//这里我得到了错误
int-CalcularCantPalabras(char*str,int-largo,char*dividentador){
int largo_VectorRetorno=0;
char*palabra_cortada=新char[largo]+1;
strcpy_s(palabra_cortada,largo+1,str);
palabra_cortada=strtok(palabra_cortada,定界者);
while(palabra_cortada!=NULL){
palabra_cortada=strtok(空,分隔符);
largo_Vectoretorno++;
}   
返回largo_Vectoretorno;
}
char**splitStr(char*str、char separador、int和largoRet){
char*divideador=新字符[1];
分隔符[0]=分隔符;
int largo_string=strlen(str);
char*str_copia=新字符[largo_字符串];
strcpy_s(str_copia,largo_string+1,str);
int largo\u VectorRetorno=计算器(str\u copia、largo\u string、DIFFARDAOR);
字符**VectorRetorno=新字符*[largo_VectorRetorno];
largoRet=largo_VectorRetorno;
int posicion_vec_returno=0;
str_copia=strtok(str_copia-1,定界符);
VectorRetorno[posicion_vec_returno]=str_copia;
posicion_vec_returno=posicion_vec_returno+1;
while(str_copia!=NULL&&posicion_vec_returno)
这应该是:

char *palabra_cortada =  new char[largo+1];
因为你的
+1
[]
之外,它对数组的大小没有影响。所以
largo
是数组的大小,而不是
largo+1
。然后你会受到双重打击。
new char[largo]执行
,并为您提供指向数组第一个元素的指针。然后您意外添加1,这将指针移动到数组的第二个元素


数组不是从
0
largo+1
,而是从
1
largo
。实际上,数组是短的两个元素。这很可能是问题的根源。

您没有使用字符向量,这将被称为
std::vector
。它管理自己的内存和良好的调试器我将执行边界检查。您的代码很难读取。之后的行很可能是
strcpy\s(palabra\u cortada,largo,str);
char *palabra_cortada =  new char[largo]+1;
char *palabra_cortada =  new char[largo+1];