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

#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 { if ( argc!= 2 ) string args = argv ; if || string DosyaKonumu = args; string SplitY , SplitX , BTus , Kontrol, TikSayi, KoordinatlarX, KoordinatlarY, BTik, Dongu, SureAl, ZamAl; unsigned short don_tekrar, sur_bekle; ifstream Dosya ; getline ; getline ; getline ; getline ; getline ; getline ; getline ; Dosya. close ; don_tekrar = atoi Dongu. c_str ; sur_bekle = atoi SureAl. c_str ; return 0; } Bu uygulamada neden açıldığı anda uygulama çküyor? IDE -> CodeblocksDerleyici -> VC++ 10 Bloktaki kodlar silinince çalışıyor.

Sorun SplitY buradaymış ancak neden crash oluyor? RAM de yeteri kadar ram de var aslında Stack blü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 yntemler kullanırsan sıkıntın kalmaz. DrKill tarafından 09/Nis/13 21:42 tarihinde düzenlenmiştir Bu imzayı her grdüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı smürmektir

linker'a stack size'imi 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 . 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..

İş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 szcükler "dinamik bellek ynetimi". Olaylara karışmayın!

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

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.

İş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.

dinamik bellek kullanmak elbette ki daha akilci bi yontem olurdu fakat ben, sorunun gercekten neden kaynaklandigini belirtmek istedim..