我寫了兩種方式的代碼 試圖在Visual Studio 2012中運行 - 我打開項目作爲簡單的控制檯應用程序,我得到訪問權限評估異常。爲什麼我的簡單反向字符*不起作用?
代碼1
void revReq(char* str)
{
if(*(str+1) != '\0')
revReq(str+1);
putchar(*str);
}
代碼2
void rev(char* str)
{
char* retVal = new char[strlen(str)]+1;
char* ptr = str + strlen(str)-1;
int i = 0;
while(ptr != str)
{
retVal[i++]=*ptr;
*ptr = '\0';
ptr--;
}
}
的inpus是
char* n = "abcdef";
revReq(n);
異常
在0x00B11E7C在Ex003.exe未處理的異常:0000005:訪問違規讀取地址0xFFFFFFFF。
內存分配過程中不忘記加上'+ 1'爲空終止 –
你爲什麼忽略了整個標準庫? 'std :: reverse(str,str + strlen(str)-1);'。使用'std :: string'更好。 –
這是學術實踐...我不想使用 ... –
Yanshof