İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Bad Ptr Yaklama?

algea12.02.20123 cevap1.831 görüntüleme
2011'den beri505 mesaj
#1
Visual Studio 2010 da C++ de yapamaya çalıştığım programda "Bad Ptr" nasıl yakalanabilinir. "Hata burada" olarak belirttiğim satırda Bad Ptr bir türlü yakalamayı başaramadım.
Yardımlarınızı bekliyorum
#include <stdarg.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

char *MultiStrCat(char * first, ...);
int main(int argc, char* argv[])
{
    char *str1 ="Hello World1";
    char *str2 ="Hello World2";
    char *str3 ="Hello World3";
    char *StrMix;
    StrMix =MultiStrCat(str1,str2,str3);
    printf("%s\n",StrMix);
    getch();
    return 0;
}

char *MultiStrCat(char * first, ...)
{
    int totlen;
    char * item;
    int count = 0, sum = 0;
    item = first;
    va_list marker;
    va_start( marker, first );
    while(true)
    {
        count++;
        sum = sum+ strlen(item);
        item = (char*) va_arg( marker, char*);
        if (item ==NULL) {break;} //Hata burada
    }

    va_end(marker);
    char *buffer =new char[sum+1]; 
    *(buffer+0)='\0';
    strcpy(buffer,first);
    va_start( marker, first );
    for (int c=0;c<count-1;c++){
        item = va_arg( marker, char*);
        strcat(buffer,item);
    }
    return(buffer);
}
Cevaplar
2008'den beri3.195 mesaj
#2
bad ptr yakalamak derken ? pıtır, pıtırdık?
algea Konuyu açan
2011'den beri505 mesaj
#3
Benim tanımlamam değil Visual Studio böyle bir tanımlama vermiş. Neyse neymiş
Yakalayabilirseniz haber verin bana da?
2011'den beri38 mesaj
#4
Selam ;

Bad Ptr dedigi, bad pointer , zaten hata mesajindada acik acik gostermis Visual studio. va_arg macro icerdiginden sana devamli pointer dondurecektir, ama diyeliki senin fonksiyonuna 2 parametre girilmis, dongunun 3. iterasyonunda item pointerin sacma sapan bir deger gondereceginden boyle bir hata alacaksin, Kac parametrenin olduguna ve bu parametrelerin tipinin dogru girildigini bir sekilde kontrol etmen lazim. Sana http://www.cplusplus.com/reference/clibrary/cstdarg/va_arg/ ornegine bakmani oneririm, gordugun gibi buradaki ilk parametre kac tane paramatre gelecegidir.

Kolay gelsin

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.