<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Visual C++ 6.0 / .NET (unmanaged)</title><link>https://www.dotnetzone.gr:443/cs/forums/30/ShowForum.aspx</link><description>Για τους hardcore developers, C/C++ forum για windows εφαρμογές!</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Πρόβλημα με malloc μεγάλων data blocks.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/25255.aspx</link><pubDate>Wed, 21 Feb 2007 19:21:26 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:25255</guid><dc:creator>ilias</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/25255.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=25255</wfw:commentRss><description>Κάποιες μικρές διορθώσεις:&lt;br&gt;1)Η malloc, όπως και η VirtualAlloc κάνουν allocate virtual μνήμη και όχι φυσική μνήμη. Επομένως, η RAM δεν έχει καμία σχέση.&lt;br&gt;2)Αν χρησιμοποιήσεις memory mapped files, τότε πάλι ο cache manager σε συνεργασία με το memory manager θα φροντίσουν, ώστε τα δεδομένα που χρειάζεσαι να βρίσκονται στη μνήμη (βλ. και τον prefetcher, γνωστό και ως Windows Superfetch στα Windows Vista). Δε θα τα διαβάζεις απευθείας απ'το δίσκο.&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα με malloc μεγάλων data blocks.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23361.aspx</link><pubDate>Thu, 11 Jan 2007 19:25:24 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23361</guid><dc:creator>DarthMoul</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23361.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=23361</wfw:commentRss><description>Έχω την εντύπωση ότι η μνήμη, ακόμα και με blocks των 512 MB και cache efficient κώδικα, θα είναι πιο γρήγορη από τον δίσκο. Και ελέγχοντας την διαθέσιμη RAM και την χρήση της μπορώ να καθορίσω το μέγιστο μέγεθος που μπορώ να κάνω malloc χωρίς να προκαλέσω swapping. Το πρόβλημα μου είναι πως όταν τελικά έχω διαθέσιμη μνήμη πάνω από 512 MB και μπορώ να κάνω το malloc με ασφάλεια χωρίς να προκαλέσω swapping, η malloc σκάει, οπότε θα δοκιμάσω την VirtuallAlloc που μου είπε η Νατάσσα. &lt;br /&gt;
&lt;br /&gt;
Το πρόγραμμα που δουλεύω είναι cross platform και η δουλειά του είναι να κάνει data manipulation από data sets δεκάδων ή και εκατοντάδων εκατομμυρίων records (FLR ή VLR με μεταβλητό αριθμό πεδίων fixed ή delimited) και multithread sort/merge, input reformating εάν χρειάζεται και έχει σχεδιαστεί έτσι ώστε να κάνει και cross-platform distribution στο μέλλον. Στα unix λειτουργικά την malloc την βόλεψα με μια setrlimit αλλά στα windows μόλις περνάω τα 512 MB τρώω πόρτα. Η brk/sbrk family functions δεν είδα να παίζουν πουθενά στα windows και τελικά κατέφυγα εδώ για να βρω την πλέον δόκιμη λύση για το πρόβλημα μου.</description></item><item><title>Απ: Πρόβλημα με malloc μεγάλων data blocks.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23359.aspx</link><pubDate>Thu, 11 Jan 2007 19:06:05 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23359</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23359.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=23359</wfw:commentRss><description>Ταχύτητα και blocks των 512 ΜΒ? Λόγω του swapping θα έχεις το penalty των memory mapped files χωρίς το όφελος. Εξάλλου, και η VirualAlloc θα έχει τους περιορισμούς του λειτουργικού. Άσε, που για να σου καθαρίσει 512 ΜΒ μνήμη το οποιοδήποτε function θα πρέπει να κάνει το ίδιο swap άλλες σελίδες. &lt;BR&gt;&lt;BR&gt;Σκέψου πάντως, ότι τόση πολύ μνήμη χρησιμοποιούν συνήθως μεγάλοι database servers. Μήπως υπάρχουν ευκολότεροι τρόποι να κάνεις αυτό που θέλεις, χωρίς να πιάνεις εκ των προτέρων τόση μνήμη?</description></item><item><title>Απ: Πρόβλημα με malloc μεγάλων data blocks.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23356.aspx</link><pubDate>Thu, 11 Jan 2007 15:55:14 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23356</guid><dc:creator>DarthMoul</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23356.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=23356</wfw:commentRss><description>Νατάσα σ'ευχαριστώ για την γρήγορη απάντηση. Επειδή ελέγχω το μέγεθος της φυσικής μνήμης καθώς και την χρήση της πριν από το malloc δεν υπάρχει ο κίνδυνος που λες. Το δε memory mapping που προτείνεις δεν αποτελεί λύση στην περίπτωση μου για δύο λόγους. Πρώτον, το πρόγραμμα θα πρέπει να είναι γρήγορο και η ανεξέλεγκτη χρήση του δίσκου από το λειτουργικό δεν είναι επιλογή και δεύτερον, το memory mapping υπόκειται και αυτό στους περιορισμούς του Virtual Address Space που μπορεί να χειριστεί το λειτουργικό. Επίσης το memory mapping θα υποστεί και τους περιορισμούς του file system σε περίπτωση που αυτό τύχει να είναι fat32.  &lt;br&gt;
&lt;br&gt;
Η VirtualAlloc φαίνεται να μου κάνει. Να είσαι καλά &lt;img src="/cs/emoticons/emotion-1.gif" alt="Smile" /&gt;&lt;br&gt;</description></item><item><title>Απ: Πρόβλημα με malloc μεγάλων data blocks.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23341.aspx</link><pubDate>Thu, 11 Jan 2007 06:24:06 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23341</guid><dc:creator>Νατάσα Μανουσοπούλου</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23341.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=23341</wfw:commentRss><description>Μπορείς πάντα να χρησιμοποιήσεις τα Win32 APIs για διαχείριση μνήμης (VirtualAlloc κλπ). Δεδομένου όμως ότι τα user mode addresses έχουν 2GB διαθέσιμα, άντε 3GB με τα memory extensions, περπατάς σε τεντωμένο σχοινί. Μήπως θα μπορούσες να εξετάσεις εναλλακτικές μεθόδους, π.χ. memory mapped files;&lt;br&gt;</description></item><item><title>Πρόβλημα με malloc μεγάλων data blocks.</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/23337.aspx</link><pubDate>Thu, 11 Jan 2007 04:11:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:23337</guid><dc:creator>DarthMoul</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/23337.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=30&amp;PostID=23337</wfw:commentRss><description>Καλησπερίζω την παρέα των developers. Θα ήθελα να κάνω δύο ερωτησούλες για κάτι προβληματάκια που έχω με ένα Visual C project:&lt;br&gt;1) Όταν κάνω malloc μεγάλα data blocks, μεγαλύτερα από 512 MB, η malloc σκάει και επιστρέφει NULL. Υπάρχει κάποιος τρόπος να αυξήσω τα όρια της; &lt;br&gt;2) Υπάρχει τρόπος να δημιουργήσω installer για το πρόγραμμα μου μέσα από το Visual Studio, ή χρειάζεται να χρησιμοποιήσω κάποιο άλλο tool&lt;br&gt;&lt;br&gt;Χρησιμοποιώ Visual Studio Express 2005 και Win32 Plarform SDK. Ο κώδικας μου είναι σε C (όχι C++)&lt;br&gt;&lt;br&gt;Κάθε βοήθεια ευπρόσδεκτη. Ευχαριστώ εκ των προτέρων.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item></channel></rss>