|
|
|
|
| Zitat von Traxer
| Zitat von hoschi
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
struct Foo {
int a;
string* b;
string c;
float f;
};
int main() {
Foo* foo = static_cast<struct Foo*>(malloc(sizeof(struct Foo)));
...
free(foo);
return 0;
}
Das ist schon so nicht gut, klar. Wer weiss auf den ersten Blick was passiert ist?
Spoiler - markieren, um zu lesen:
malloc() ist reines C, nicht C++ und ruft somit die Konstrukturen nicht auf und holt sich nur den Speicher. Wie durch ein Wunder (solche Wunder haben eine fachspezifischen Namen: undefiniertes Verhalten) hat es aber trotzdem Teilweise funktioniert. Bist halt doch der string c mit einem std::bad_alloc bei aufeinanderfolgenden Zuweisungen explodiert ist. Proband string b tut das malloc() nicht weh, ist nur ein Pointer.
Loesung: new()/delete(), weil C++
Hinweis: LLVM und GCC warnen einen nicht.
| |
das ist übrigens kein undefiniertes verhalten. das verhalten ist vollkommen korrekt und auch so gewollt.
um das in der art richtig zu nutzen gibt es halt placement new und dann musst du halt den destruktor manuell aufrufen, befor du den speicher freigibst.
das ist effektiv das, was new und delete im hintergrund machen und was man machen muss, wenn man selber nen allocator (nicht im sinne von stl) bauen will / muss.
| |
Stimmt wohl. Ich hatte "undefiniert" angenommen, weil ich innerhalb des original Quellcodes in der Lage war einmal dem string-Objekt einen C-String zuzuweisen, bei der concatenation es weiteren C-Strings an das string-Objekt besagten bad::alloc erhalten habe. Wie festgestellt, bloed wenn man C-Code unueberlegt mit C++ erweitert und mischt.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von hoschi am 22.04.2016 10:52]
|
|
|
|
|
|
Rufus hat nicht so unrecht. Und ansonsten haben mir die paar letzten Posts einen Lachflash besorgt
btw.
Gerade arbeitet man an XDG-Apps, darueber kann man jetzt streiten. Aber Ubuntu braucht natuerlich SNAP, mit veralteten Libraries und Hauptspeichergemampfe.
|
|
|
|
|
|
|
| Zitat von RichterSkala
| Zitat von csde_rats
Python lohnt sich. Es ist eine sehr angenehme Sprache. Bei weitem nicht perfekt, aber alles kein Beinbruch.
| |
Irgendwie ärgert es mich, dass man bei Unterklassen den Konstrukter der Elternklasse explizit aufrufen muss. Das ist bei anderen OOP Sprachen nicht so, oder?
| |
Ach, das geht ja
In Py3 wurde das auch deutlich gelindert, statt super(Typ, self).__init__() schreibt man jetzt super().methode(...) [1]
(__new__ ist btw der Konstruktor, __init__ ist der Initialisierer; die Unterscheidung machen die meisten OO-Sprachen nicht)
[1] Das neue super() kann man immernoch in Python erklären, mittels Inspektion und Stack.
|
|
|
|
|
|
|
Ich haette viel frueh ein Twix essen sollen, jetzt geht es mir besser. Laut Packung sind die alle umhuellt
|
|
|
|
|
|
|
| Zitat von YT
| Zitat von [KdM]MrDeath
und ich mich um die studienarbeit prokrastinieren :/
| |
Zweitstudium ?!?!?
| |
nö, warum?
|
|
|
|
|
|
|
| Zitat von csde_rats
In Py3 wurde das auch deutlich gelindert, statt super(Typ, self).__init__() schreibt man jetzt super().methode(...) [1]
| |
hmmm ok, da hatte ich das andersrum im kopf, dachte super() wär das alte... da hat mir glaube ich pycharm und pylint immer nen streich gespielt :/
|
|
|
|
|
|
|
Kennt sich hier irgendeiner mit Samba als Active Directory Domain Controller aus? Speziell das Mapping der uid & gid per winbind?
ICH KRIEG DEN DRECK NÄMLICH UM's VERRECKEN NICHT ZUM FLIEGEN!!
|
|
|
|
|
|
|
Meine Glaskugel sagt: So schaue er in die Logs und vergleiche seine Konfiguration mit der vorgegebenen.
|
|
|
|
|
|
|
War jetzt kein sehr qualifizierter Hilferuf meinerseits, schon klar.
Die Logs sagen mal exakt gar nix, das ist ja das Problem. Er holt sich ja brav die UNIX-Attribute der im AD angelegten Nutzer. Aber halt nicht alle!
cn und samaccountname holt er sich. Aber uid, gid, shell und home sind ihm völlig egal. Damit ist es halt aber leider unmöglich, shares anzulegen.
Ich habe den Eindruck, ich verpasse hier irgendwas ganz einfaches, aber grundlegendes.
Im Samba-Wiki heißt es nur lapidar:
| Additionally using distinct file servers avoids the idiosyncrasies in the winbindd configuration on the Active Directory Domain Controller. The Samba team does not recommend using a Samba-based Domain Controller as a file server, and recommend that users run a separate Domain Member with file shares. | |
Also wissen die wohl, dass das Mapping von winbind ein ziemlicher Fuck-Up sein kann - dokumentieren aber nirgends, wie man das umgehen kann. Außer durch einen dezidierten Fileserver. Ja klar, ist für so ne kleine Klitsche natürlich gar kein Problem, einfach noch so nen Stromfresser neben dran zu stellen, nur weil winbind spinnt.
|
|
|
|
|
|
|
Virtualisierung du suchst, junger Padawan.
|
|
|
|
|
|
|
| Zitat von audax
Virtualisierung du suchst, junger Padawan.
| |
Da habe ich auch schon dran gedacht. Aber irgendwie widerstrebt es mir, das eigentliche Problem damit zu umgehen, anstatt es zu lösen.
|
|
|
|
|
|
|
Ist sowieso nicht die blödeste Idee, Dinge zu virtualisieren. Allerdings hab ich auch gerade ne 3-tägige AWS Schulung hinter mir.
|
|
|
|
|
|
|
|
|
|
|
Dem Thema verweigert sich mein ehemaliger Chef bis heute. Lieber für jeden Kack dedizierte Hardware abstellen, als könnte man VMs nicht teuer abrechnen. Vermutlich will er keine komplexere Infrastruktur aufbauen weil kein Admin länger als sechs Monate bleibt und er selbst noch auf dem Stand von vor 15 Jahren festhängt
|
|
|
|
|
|
|
Ich "verweigere" mich der Virtualisierung ja nicht mal. Nur habe ich schlicht keine Zeit, mich damit derart zu befassen, dass ich behaupten könnte, das ganze sicher zu betreiben.
|
|
|
|
|
|
|
Ach, learning by doing.
|
|
|
|
|
|
|
Beschreibt mein täglich Brot ganz gut.
|
|
|
|
|
|
|
Einfach in die Cloud gehen.
|
|
|
|
|
|
|
py.test-Prozesse segfaulten nach ===== 2839021890 passed in 1 parsec =====
|
|
|
|
|
|
|
parsec?
|
|
|
|
|
|
|
|
|
|
|
Kein taktiles feedback. :/
|
|
|
|
|
|
|
Gerade versehentlich history | aptitude statt history | grep aptitude eingegeben und aptitude fängt tatsächlich an Dinge zu tun.
|
|
|
|
|
|
|
Ich habe 4 identische SSDs, die in 4 identische Server sollen. Kann ich ein OS einfach auf der einen installieren und dann mittels dd auf die anderen schreiben?
|
|
|
|
|
|
|
Wenns nicht Windows ist ja. rsync wäre aber effizienter.
|
[Dieser Beitrag wurde 1 mal editiert; zum letzten Mal von TheRealHawk am 26.04.2016 11:58]
|
|
|
|
|
|
Aber rsync kopiert die partitionstabelle doch nicht
|
|
|
|
|
|
|
sfdisk -d /dev/sdx > partitionen
sfdisk /dev/sdx < partitionen
|
|
|
|
|
|
|
identische server?
also auch die mac adressen der netzwerkkarten identisch?
ansonsten musste zumindest noch /etc/udev/rules.d/70-persistent-net.... löschen.
identische sshd server keys sind jetzt auch so ne sache, aber das lässt sich ja nachträglich fixen.
|
|
|
|
|
|
|
Die Konfiguration mache ich nachher einzeln, sind nur 4 Maschinen.
dd dauert ja ewig.
|
|
|
|
|
|
|
Hast du daran gedacht die Blocksize hochzustellen?
dd if=/dev/sdArr of=/dev/sdBee bs=64k
|
[Dieser Beitrag wurde 2 mal editiert; zum letzten Mal von B0rG* am 26.04.2016 14:36]
|
|
|
|
|
Thema: 30*100 gute Gründe für Linux ( Jeder Post zählt ) |