Şimdi Ara

c++ ile derlediğim 32bit exe ne kadar ram kullanabilir ?

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
14
Cevap
0
Favori
337
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • merhaba arkadaşlar.

    başlıkta dediğim gibi ben c++ da bir şeyler yazıp derlediğimde bana 32bit exe veriyor.
    benim bildiğim işletim sistemin 32 bit ise 3 gb ramden fazla kullanamıyordun bu 32 bit işletim sisteminde geçerliydi peki 32 bit exede de geçerli mi ?
    yani ben 64 bit işletim sisteminde 32bit exe oluşturuyorum ama gene 3gb ile sınırlı mıyım ? yoksa bu sadece işletim sistemiyle mi alakalı bir şey.

    ve son olarak eğer öyleyse 64 bit exe olarak derlemem için ne yapmam gerek

    code blocks kullanıyorum
    derleyici olarak GNU GCC compiler seçili

    bir de son olarak mingw nedir ? benim sorumla bir alakası var mı code blocksu indirken mingw yazıyor bazı sürümlerinde



  • DuckDuckGo'dahttps://duckduckgo.com/?q=32bit+application+on+64bit+OS+address&t=hg&ia=qa yaptığım arama özel sonuncunda

    https://stackoverflow.com/questions/639540/how-much-memory-can-a-32-bit-process-access-on-a-64-bit-operating-system 'a göre 64bit OS'de 32bit prosess default olarak 2GB, linkte belirtilen Flag ile derlenirse 4GB kullanabiliyor. Linkte 32bit Microsoft Windows Server 2008 'in ufak bir hack ile proseslerin toplamı için 64 GB kullanabildiği belirtiliyor ancak tek bir 1 prosess'in 4GB geçmesi mümkün değil.



    64bit OS veya 32bit OS olsun farketmez, 64bit exe derlemek için CPU'nun 64bit olması yeterli. Yani , 64bit OS'de 64bit app derlemek için kullandığın derleyiciye ilgili Flag degerini iletmelisin. GCC için bu hatırladığım kadarıyla '-arch x64_64' gibi birşeydi ve makefile içinde CFLAGS değişkeni tanımlanıyorsa ya oraya konuluyor, ya da GCC derleme komutuna ekleniyordu. MinGW, Mini GCC for Windows 'un başharfleri olabilri, yani Windows ta alışan GCC derleyici ve Code Blocks onu kullanacak şekilde ayarlanmış fakat Microsoft'un C/C++ derleyicisini kullanacak sekilde de pekala ayarlanabilir. Bu arada uygulama geliştirirken Java hariç tüm dillerde Emacs editör kullanıyorum ve Emacs'te her bir dil için kullanacağın derleyiciyi Emacs konfig dosyasına tanımlayıp test işlemlerini cok seri yapabiliyorsun...

    < Bu ileti mini sürüm kullanılarak atıldı >
  • ilgin için çok teşekkürler. c++ dilini kullanarak sdl kütüphanesi ve sdl içinde de opengl kullanarak bir şeyler test ediyorum opengl hakkında bir bilgin var mı? sormak istediğim şu ben openglin vertex buffer object yöntemini (VBO) kullandığımda ekran kartının vramine yükleme yapıyor ama dosyalar çok büyük olduğundan vram dolduktan sonra normal rame yüklemeye devam ediyor. problem şu ki rame yüklediğini görev yöneticisi işlemler sekmesinde göremiyorum ama performans sekmesinde bellek kullanımı grafiğinden anlaşılıyor. yani şöyle diyim 5gb 3boyutlu animasyonum var ben bunu VBO yöntemiyle yüklediğimde 512mb vram dolunca kalan 4.5gb veriyi rame atıp uygulamayı açıyor hata vermiyor. ama 32bit bir exe hata vermesi gerekmiyor mu gerçi işlemlerde ram kullanımında çıkmıyor performans sekmesinden anlaşılıyor ama. karışık oldu yazım ama umarım anlatabilmişimdir :D



    < Bu mesaj bu kişi tarafından değiştirildi emrekaya413 -- 19 Mayıs 2018; 4:12:50 >
  • Yo sorun karışık değil sadece SDL ve OpenGL ile pek birşey geliştirmedim o yüzden ayrıntılar için bişey diyemem...

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Sorduğun soru ile uğraştığın alan arasında dağlar var. Yani OpenGL/SDL düzeyinde C programlama yapacaksan işletim sistemleri, address space, 64-bit vs 32-bit, cross compilers, gibi konularda hiçbir sıkıntın olmaması lazım, ama sen hala mingw nedir falan diye soruyorsun...

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Haklısın bir şeyleri kavrayamadan yazmaya çalışıyorum mazur gör. Peki bir fikrin var mı ? Neden sınırlamaya takılmıyorum vbo yöntemi yüzünden mi?

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • 32 değildir o. sizeof ile işaretçi uzunluğuna bak istersen.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • Bahsettiğin program 32bit exe ile açılıp video işlemleri için 64bitlik başka bir proses açıyor olabilir.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • sdl kütüphanesinin 32 bit ve 64 biti ayrı ben 32 bitini kurdum 64 hata vermişti hatta çözememiştim olayı. sen diyince şimdi görev yöneticisi işlemlerden dikkat ettim 2 adet işlem açılıyor birisi 32bit benim exe bir diğeri conhost.exe diye bir şey bunun yanında 32 yazmıyor bu 64 sanırım ama conhost.exe 1.5mb ram kullanıyor sadece o olamaz sanırım. her neyse en azından çalışıyor ama nasıl çalıştığını bilmiyorum artık yapacak bir şey yok :D
  • anlayamadım dediğini nasıl uygulayacağım tam ne yaptığımı gösterim

    glBufferData(GL_ARRAY_BUFFER , 3*THfacesCount[a]*12 , &THBigVertices[a][0][0][0] , GL_STATIC_DRAW);

    burada 2. parametrede size ı belirtiyorum 3. parametrede de adresini veriyorum arrayin o size boyunca içindeki verileri önce vrame sonra vram yetmezse rame atıyor. böyle bir sürü yüklüyorum yüklemesi bitince 4 5 gb ram kullanmış oluyorum

    burada sizeofu nasıl kullanıcam
  • printf("%d\n", sizeof(char *));



    8 yazarsa 64 bit olarak derlenmiştir.

    < Bu ileti mobil sürüm kullanılarak atıldı >
  • malesef 4 yazıyor :d
  • emrekaya413 E kullanıcısına yanıt
    4 mu olamaz cok zor
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.