2016-01-14 1 views
1

je le code suivant qui est un test assez simple, mais le VS refuse de l'exécuter:C++: STXXL et erreur d'exécution VS simple code

stxxl::syscall_file OutputFile("Data/test.bin", stxxl::file::RDWR | stxxl::file::CREAT | stxxl::file::DIRECT); 
typedef stxxl::VECTOR_GENERATOR<struct Rectangle, 8, 2, 524288>::result vector_type; 
vector_type rects(&OutputFile); 

le programme produit une erreur d'exécution dans un emplacement de mémoire dans la 3ème ligne. Qu'est-ce que je fais mal? Je compile le programme pour les plates-formes 64 bits. En mode débogage si j'appuie sur continuer le programme reprend et s'exécute sans problème.

+0

Cela fonctionne pour moi sur Linux sans aucune erreur d'exécution. Est-ce que 'Rectangle' est un POD? Est-ce que [exemple] (http://stxxl.sourceforge.net/tags/master/examples_2algo_2copy_and_sort_file_8cpp-example.html#_a6) fonctionne sur votre plate-forme? –

+0

Oui, il a 3 ints non signés et 2 tableaux float avec la taille déclarée. J'ai testé d'autres exemples et le travail semble bien. J'ai essayé d'enlever les tableaux mais cela n'a fait aucune différence. – TheShadow

+0

Merci pour la réponse! Le compilateur me donne des erreurs par défaut et le premier mot-clé struct. Quel est le but de ce code? – TheShadow

Répondre

0

Prenons l'exemple suivant:

#include <stxxl/io> 
#include <stxxl/vector> 
#include <iostream> 

struct Rectangle { 
    int x; 
    Rectangle() = default; 
}; 

int main() { 
    stxxl::syscall_file OutputFile("/tmp/test.bin", stxxl::file::RDWR |  
         stxxl::file::CREAT | stxxl::file::DIRECT); 
    typedef stxxl::VECTOR_GENERATOR<Rectangle, 8, 2, 524288>::result vector_type; 
    vector_type rects(&OutputFile); 

    Rectangle my_rectangle; 

    for (std::size_t i = 0; i < 1024 * 1024 * 1024; ++i)  
    rects.push_back(my_rectangle); 

    return 0; 
} 

Une erreur peut facilement être provoqué quand il n'y a pas assez d'espace sur le périphérique. Pouvez-vous poster votre erreur d'exécution?