folder Tahribat.com Forumları
linefolder C - C++
linefolder Neden Uygulama Açılmıyor (Crash) [C++]



Neden Uygulama Açılmıyor (Crash) [C++]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek
    #include <Windows.h>
    #include <iostream>
    #include <fstream>
    #include <stdio.h>
    #include <string>
    #include <conio.h>
    
    #pragma comment(lib,"user32.lib");
    
    
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    
    if ( argc != 2 )
        {
            
            return EXIT_SUCCESS;
        }
    
        string args = argv[1];
        if((args == "/?") || (args == "-?"))
        {
            
            return EXIT_SUCCESS;
        }
    
        string DosyaKonumu = args;
        string SplitY[100000],SplitX[100000],BTus[100000],Kontrol,TikSayi,KoordinatlarX,KoordinatlarY,BTik,Dongu,SureAl,ZamAl;
        unsigned short don_tekrar,sur_bekle;
        ifstream Dosya (DosyaKonumu);
        getline(Dosya,Kontrol);
        getline(Dosya,TikSayi);
        getline(Dosya,KoordinatlarX);
        getline(Dosya,KoordinatlarY);
        getline(Dosya,BTik);
        getline(Dosya,Dongu);
        getline(Dosya,SureAl);
        Dosya.close();
        don_tekrar = atoi((char*)Dongu.c_str());
        sur_bekle = atoi((char*)SureAl.c_str());
    
        return 0;
    
    }
     

    Bu uygulamada neden açıldığı anda uygulama çöküyor?

    IDE -> Codeblocks
    Derleyici -> VC++ 10

    Bloktaki kodlar silinince çalışıyor.

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek

    Sorun

    SplitY[100000]

    buradaymış ancak neden crash oluyor? RAM de yeteri kadar ram de var aslında

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    İşletim sistemi, programın ilk açılırken istediği bellek boyutuna bakar. Eğer değer çok büyükse o alanı vermek istemeyebilir diyebiliriz yüzeysel olarak. http://forum.ceviz.net/c-c/121877-dev-cde-buyuk-matrislerde-karsilastigim-hata.html adresinde de bu konu geçmişti. Araştırmanız gereken anahtar sözcükler "dinamik bellek yönetimi".


    Olaylara karışmayın!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek
    Fatih54 bunu yazdı

    Sorun

    SplitY[100000]

    buradaymış ancak neden crash oluyor? RAM de yeteri kadar ram de var aslında

    Stack bölümünden istediğin içindir. İşletim sisteminde yeterince bellek olsada stack kısmı ile heap kısmını işletim sistemi ayrı ayrı programlara tahsis eder.

     

    new, malloc, calloc gibi dinamic yöntemler kullanırsan sıkıntın kalmaz.

    DrKill tarafından 09/Nis/13 21:42 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    linker'a stack size'imi ( su boyutlarda[reserve,commit] ) yaz dedigin zaman, linker 'da pe yapisi icinde ki

    DWORD SizeOfStackReserveThe amount of virtual memory to reserve for the initial thread's stack. Not all of this memory is committed, however (see the next field). This field defaults to 0x100000 (1MB). If you specify 0 as the stack size to CreateThread, the resulting thread will also have a stack of this same size.

     

    DWORD SizeOfStackCommitThe amount of memory initially committed for the initial thread's stack. This field defaults to 0x1000 bytes (1 page) for the Microsoft Linker while TLINK32 makes it two pages.


    elemanlari set eder. boylece exe bellege yuklenirken isletim sistemi gereksinimleri yerine getirir ve sorun cikarmaz :)

    http://msdn.microsoft.com/en-us/library/8cxs58a6.aspx

    guru tarafından 11/Eki/13 11:22 tarihinde düzenlenmiştir

    ..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    uLtRaLoVeR
    uLtRaLoVeR's avatar
    Kayıt Tarihi: 25/Haziran/2007
    Erkek

    C ödevi yaparken aynı muhabbeti ben de yaşamıştım. 1000*1000 lik bir sürü array almıştım. Programın alabileceği static memory'yi aştığım için main fonksiyonuna girmeden segmentation fault verip kaptıyordu. Dinamik kullan sorun çözülür.

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Fatih54
    Fatih54's avatar
    Kayıt Tarihi: 16/Ağustos/2012
    Erkek

    İşletim sistemi stack olarak vermediğinden olmuş guru nun dediği yapılırsa düzelecektir büyük ihtimalle.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpArK
    SpArK's avatar
    Kayıt Tarihi: 17/Temmuz/2005
    Erkek
    Fatih54 bunu yazdı

    İşletim sistemi stack olarak vermediğinden olmuş guru nun dediği yapılırsa düzelecektir büyük ihtimalle.

    Bence o tip seyler yapma

    vector<string> ya da link list yaz ne bileymi dinamik birseyler kullan

     

    vector<string> SplitY;

    vector<string> SplitX;

    vector<string> BTus; 

     

    ya da olmadi istersen Boostunkilere bak vs vs.

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    guru
    guru's avatar
    Kayıt Tarihi: 30/Mart/2007
    Erkek

    dinamik bellek kullanmak elbette ki daha akilci bi yontem olurdu

    fakat ben, sorunun gercekten neden kaynaklandigini belirtmek istedim


    ..
Toplam Hit: 2162 Toplam Mesaj: 9