C ++ – Pythonbindungen verursachen "Zugriffsverletzung Lesestelle 0x00000002"?

Ich benutze die CGAL Python Bindungen für Alpha Form .

Ich habe 8 Arrays von CGAL.Triangulations_2.Vertex Objekte wie folgt:

 In [5]: len(alphaShapeVertices) Out[5]: 8 In [6]: for i, asv in enumerate(alphaShapeVertices): ...: print i ...: print asv 0 [<CGAL.Triangulations_2.Vertex object at 0x03C423E8>, <CGAL.Triangulations_2.Vertex object at 0x03C42420>, <CGAL.Triangulations_2.Vertex object at 0x03C42458>, <CGAL.Triangulations_2.Vertex object at 0x03C42490>, <CGAL.Triangulations_2.Vertex object at 0x03C424C8>, <CGAL.Triangulations_2.Vertex object at 0x03C42500>, <CGAL.Triangulations_2.Vertex object at 0x03C42538>, <CGAL.Triangulations_2.Vertex object at 0x03C42570>, <CGAL.Triangulations_2.Vertex object at 0x03C425A8>, <CGAL.Triangulations_2.Vertex object at 0x03C425E0>, <CGAL.Triangulations_2.Vertex object at 0x03C42618>, <CGAL.Triangulations_2.Vertex object at 0x03C42650>, <CGAL.Triangulations_2.Vertex object at 0x03C42688>, <CGAL.Triangulations_2.Vertex object at 0x03C426C0>, <CGAL.Triangulations_2.Vertex object at 0x03C426F8>, <CGAL.Triangulations_2.Vertex object at 0x03C42730>, <CGAL.Triangulations_2.Vertex object at 0x03C42768>, <CGAL.Triangulations_2.Vertex object at 0x03C427A0>, <CGAL.Triangulations_2.Vertex object at 0x03C427D8>, <CGAL.Triangulations_2.Vertex object at 0x03C42810>, <CGAL.Triangulations_2.Vertex object at 0x03C42848>] 1 [<CGAL.Triangulations_2.Vertex object at 0x03C42880>, <CGAL.Triangulations_2.Vertex object at 0x03C428B8>, <CGAL.Triangulations_2.Vertex object at 0x03C428F0>, <CGAL.Triangulations_2.Vertex object at 0x03C42928>, <CGAL.Triangulations_2.Vertex object at 0x03C42960>, <CGAL.Triangulations_2.Vertex object at 0x03C42998>, <CGAL.Triangulations_2.Vertex object at 0x03C429D0>, <CGAL.Triangulations_2.Vertex object at 0x03C42A08>, <CGAL.Triangulations_2.Vertex object at 0x03C42A40>, <CGAL.Triangulations_2.Vertex object at 0x03C42A78>, <CGAL.Triangulations_2.Vertex object at 0x03C42AB0>, <CGAL.Triangulations_2.Vertex object at 0x03C42AE8>] 2 [<CGAL.Triangulations_2.Vertex object at 0x03C42B20>, <CGAL.Triangulations_2.Vertex object at 0x03C42B58>, <CGAL.Triangulations_2.Vertex object at 0x03C42B90>, <CGAL.Triangulations_2.Vertex object at 0x03C42BC8>, <CGAL.Triangulations_2.Vertex object at 0x03C42C00>, <CGAL.Triangulations_2.Vertex object at 0x03C42C38>, <CGAL.Triangulations_2.Vertex object at 0x03C42C70>, <CGAL.Triangulations_2.Vertex object at 0x03C42CA8>, <CGAL.Triangulations_2.Vertex object at 0x03C42CE0>, <CGAL.Triangulations_2.Vertex object at 0x03C42D18>, <CGAL.Triangulations_2.Vertex object at 0x03C42D50>] 3 [<CGAL.Triangulations_2.Vertex object at 0x03C42D88>, <CGAL.Triangulations_2.Vertex object at 0x03C42DC0>, <CGAL.Triangulations_2.Vertex object at 0x03C42DF8>, <CGAL.Triangulations_2.Vertex object at 0x03C42E30>, <CGAL.Triangulations_2.Vertex object at 0x03C42E68>, <CGAL.Triangulations_2.Vertex object at 0x03C42EA0>, <CGAL.Triangulations_2.Vertex object at 0x03C42ED8>, <CGAL.Triangulations_2.Vertex object at 0x03C42F10>, <CGAL.Triangulations_2.Vertex object at 0x03C42F48>, <CGAL.Triangulations_2.Vertex object at 0x03C42F80>, <CGAL.Triangulations_2.Vertex object at 0x03C42FB8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D030>, <CGAL.Triangulations_2.Vertex object at 0x03C4D068>, <CGAL.Triangulations_2.Vertex object at 0x03C4D0A0>] 4 [<CGAL.Triangulations_2.Vertex object at 0x03C4D0D8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D110>, <CGAL.Triangulations_2.Vertex object at 0x03C4D148>, <CGAL.Triangulations_2.Vertex object at 0x03C4D180>, <CGAL.Triangulations_2.Vertex object at 0x03C4D1B8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D1F0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D228>, <CGAL.Triangulations_2.Vertex object at 0x03C4D260>, <CGAL.Triangulations_2.Vertex object at 0x03C4D298>, <CGAL.Triangulations_2.Vertex object at 0x03C4D2D0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D308>, <CGAL.Triangulations_2.Vertex object at 0x03C4D340>, <CGAL.Triangulations_2.Vertex object at 0x03C4D378>, <CGAL.Triangulations_2.Vertex object at 0x03C4D3B0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D3E8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D420>, <CGAL.Triangulations_2.Vertex object at 0x03C4D458>] 5 [<CGAL.Triangulations_2.Vertex object at 0x03C4D490>, <CGAL.Triangulations_2.Vertex object at 0x03C4D4C8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D500>, <CGAL.Triangulations_2.Vertex object at 0x03C4D538>, <CGAL.Triangulations_2.Vertex object at 0x03C4D570>, <CGAL.Triangulations_2.Vertex object at 0x03C4D5A8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D5E0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D618>, <CGAL.Triangulations_2.Vertex object at 0x03C4D650>] 6 [<CGAL.Triangulations_2.Vertex object at 0x03C4D688>, <CGAL.Triangulations_2.Vertex object at 0x03C4D6C0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D6F8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D730>, <CGAL.Triangulations_2.Vertex object at 0x03C4D768>, <CGAL.Triangulations_2.Vertex object at 0x03C4D7A0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D7D8>] 7 [<CGAL.Triangulations_2.Vertex object at 0x03C4D810>, <CGAL.Triangulations_2.Vertex object at 0x03C4D848>, <CGAL.Triangulations_2.Vertex object at 0x03C4D880>, <CGAL.Triangulations_2.Vertex object at 0x03C4D8B8>, <CGAL.Triangulations_2.Vertex object at 0x03C4D8F0>, <CGAL.Triangulations_2.Vertex object at 0x03C4D928>] 

Ich versuche, auf den Methodenpunkt point() jedes Objekts zuzugreifen.

Allerdings kann ich es nur bis zum 2. Array machen. Ab dem dritten Tag begegne ich einer Ausnahme.

 In [7]: alphaShapeVertices[0][0].point() Out[7]: Point_2(1.00000001401,2.90491385964e-290) In [8]: alphaShapeVertices[1][0].point() Out[8]: Point_2(3.96551377978e-164,3.05578113171e-151) In [9]: alphaShapeVertices[2][0].point() # HERE: python.exe has stopped working 

Der Screenshot, wenn Ausnahme auftritt:

Bildbeschreibung hier eingeben

Wie Sie sehen können, kann die Ausnahme nicht immer im 3. Array passieren . Im Screenshot passiert es am 7.. Ich denke, es hat etwas, um die Speicherzuweisung zu tun.

Der Debugger sagt mir

Erste Chance Ausnahme bei 0x00000002 in python.exe: 0xC0000005: Zugriffsverletzung Lesestelle 0x00000002.

Wenn es für diese Ausnahme einen Handler gibt, kann das Programm sicher fortgesetzt werden.

Ich habe seit Tagen gekämpft. Könnte mir jemand helfen, warum und wie man es beheben kann?



MWE

Möglicherweise müssen Sie CGAL-Python installieren (Bindungen für die Computational Geometry Algorithms Library) (STRG + F CGAL-Python), wenn Sie es nicht haben.

Die clusters Daten finden Sie hier auf Pastie .

Wenn die Daten und die Bibliothek bereit sind, führen Sie das folgende Python-Skript aus:

 from sys import * path.append("../../cgal_package") from CGAL.Alpha_shapes_2 import * from CGAL.Triangulations_2 import Delaunay_triangulation_2 from CGAL.Kernel import * from random import * import matplotlib.pyplot as plt from matplotlib.font_manager import FontProperties import constants def Point_2_str(self): return 'Point_2'+str((self.x(), self.y())) # now we turn it into a member function Point_2.__str__ = Point_2_str def getAlphaShape(cluster): list_of_points = [Point_2(e[0], e[1]) for e in cluster] L = [] verbose = True a = Alpha_shape_2() a.make_alpha_shape(list_of_points) a.set_mode(Alpha_shape_2.Mode.REGULARIZED) a.set_alpha(1000) alpha_shape_edges = [] alpha_shape_vertices = [] for it in a.alpha_shape_edges: alpha_shape_edges.append(a.segment(it)) for it in a.alpha_shape_vertices: alpha_shape_vertices.append(it) return alpha_shape_vertices # get alpha-shape of each cluster alphaShapeVertices = [] for cluster in clusters: alphaShapeVertices.append(alphashape.getAlphaShape(cluster)) # start testing print alphaShapeVertices[0][0].point() print alphaShapeVertices[1][0].point() print alphaShapeVertices[2][0].point() print alphaShapeVertices[3][0].point() # somewhere around here the exception occurs print alphaShapeVertices[4][0].point() print alphaShapeVertices[5][0].point() print alphaShapeVertices[6][0].point() 

  • Konvertieren Sie das Python-Objekt in den C-void-Typ
  • Python nicht importieren modul- vielleicht gcc verwendet werden, um die python-bibliothek anstelle von clang zu kompilieren?
  • Rufen Sie Python von C ++ an
  • Python-Ctypes, die in Zeiger übergeben und Struct Back erhalten
  • Wie kann man die Umgebung einstellen, in der das Python-Snippet im C ++ - Programm laufen kann?
  • Wie man eine Python-Funktion aus einem Fremdsprachen-Thread (C ++)
  • Schnelle Logarithmusberechnung
  • Holen Sie die Anzahl der modifizierten Zeilen nach sqlite3 ausführen
  • Wie schreibe ich eine einfache Bittorrent-Anwendung?
  • Wie importiere ich das Caffe-Modul in Python?
  • Verknüpfen einer statischen Bibliothek in Boost Python (shared library) - Import Error
  • Python ist die beste Programmiersprache der Welt.