내가 프로그래밍에 초보자를 나는 최근에 내가 디버깅을 시도하고 만 오류 삭제 [] 소스에서 발생하는 발견디버그 어설 션 실패하는 경우에도 []
#include<iostream>
using namespace std;
void removeAllCharacters(char * , char *);
void printArray(char*);
void deleteArrays(char*,char*);
int main()
{
char * source,*remove;
source=new char[18];
remove=new char[10];
source="Hello how are you";
remove="Hi Its me";
removeAllCharacters(source,remove);
printArray(source);
deleteArrays(source,remove);
system("pause");
return 0;
}
void removeAllCharacters(char * source, char * remove)
{
int N1=strlen(source)+1;
int N2=strlen(remove)+1;
bool arr[128] = {false};
for(int i=0;i<N2-1;i++)
{
arr[remove[i]]=1;
}
char *newSource=new char[N1];
for(int i=0,j=0;i<N1-1;i++)
{
if(arr[source[i]]==0)
{
newSource[j++]=source[i];
}
}
delete [] source;
source=newSource;
newSource=0;
}
void printArray(char* arr)
{
int N=strlen(arr)+1;
for(int i=0;i<N;i++)
{
cout << arr[i];
}
cout << endl << endl;
}
void deleteArrays(char* arr1,char*arr2)
{
delete [] arr1;
arr1=0;
delete[]arr2;
arr2=0;
}
이 코드를 썼다; removeCharacters 함수에서. 나는 솔루션을 온라인으로 찾고 있지만 찾지 못했습니다.이 오류가 발생하는 이유는 무엇입니까? 내가 메인에서 동적 메모리를 할당했기 때문에 오류가 있습니까?하지만 함수에서 삭제하고 있습니까?
어떤 오류가 표시됩니까? – Richard
이것이 무엇을 의미하는지 잘 모르겠습니다 :'arr [remove [i]] = 1',하지만 그것은 정의되지 않은 행동을 일으킬 것입니다. – dlf
'std :: string'을 사용하면 코드가 작동합니다. 포인터를 객체와 혼동하고 있습니다. –