【发布时间】:2014-11-26 20:08:05
【问题描述】:
我被分配了一项任务,我应该在其中创建一些对 char 数组执行一些技巧的函数。所以我创建了这些函数,当我遇到这个“HEAP CORRUCPTION DETECTED”错误时,我试图查看它们是否正常工作。
这是我的函数的代码
void cagir(char cDizi[], short int baslangic, short int karSayisi, char cDondur[])
{
//Yerel Değişken
short int index = 0;
/*Diziyi baslangic değerinden başlayarak, NULL karakterine ulaşılmadığı ve baslangic değeri
baslangic + karSayisi'na eşit ya da küçük olduğu sürece oku */
for (; cDizi[baslangic] != '\0' && baslangic < baslangic + karSayisi; baslangic++)
{
//Okunan karakteri cDöndür dizisine yerleştir
cDondur[index] = cDizi[baslangic];
index += 1; //cDöndür dizisinin index'ini 1 artır
}
}
我在这里要做的基本上是从“cDizi”中获取指定数量的字符并将它们放入另一个预先创建的数组“cDondur”中。数组“cDizi”是用户输入数组,“cDondur”是在程序相关部分创建的数组。我想将要调用的字符数指定为数组“cDondur”的范围。
这是我在程序中调用函数的部分,并创建了“cDondur”数组
case '3': //MOD - 3
{
short int indis, karSayisi;
//Çağrılacak parçanın ilk karakterinin indisini öğren
cout << "Almak istediğiniz ilk karakterin indisi : ";
cin >> indis;
//kaç karakterlik parça çağrılacağını öğren
cout << indis << " indisli karakterden itibaren almak istediğiniz karakter sayısı : ";
cin >> karSayisi;
//Sınırı karSayisi olan bir dizi oluştur
char *Dizi = new char[karSayisi];
//Parça çağırma fonksiyonunu çağır
cagir(cDizi, indis, karSayisi, Dizi);
cout << endl;
cout << "İstediğiniz karakterler çağrıldı : ";
//cagir fonksiyonunun sonucu olan 'Dizi' dizisini ekrana yaz
for (int i = 0; i < karSayisi; i++)
cout << Dizi[i];
delete Dizi;
break;
}
karSayisi 这里是我要从数组中获取的字符数量,elemanSayisi(ARRAY) 是一个返回其参数字符数量的函数。
我真的需要找到一种方法来快速解决这个问题,我已经连续研究了大约 3 个小时的代码来修复它,但无论如何都找不到。
【问题讨论】:
-
由于我们不会说土耳其语(或其他),我们无法猜测像
cagir这样的函数有什么作用。发布例如的定义cagir也是。Dizi可能会被修改。 -
对不起,我以为我也添加了那部分,我会立即添加它
-
对于
Dizi数组,是否只需要使用delete[]而不是delete? -
试过 delete[] 而不是 delete,它给了我同样的错误
标签: c++ arrays function pointers heap-corruption