Ich implementiere einen nicht intrusiven Idle-Objektpool in C ++ unter Verwendung einer Vereinigung in einer Struktur. Verstößt dieser Code die strenge Aliasing-Regel? Um dies zu erreichen, verwende ich eine Vereinigung innerhalb einer Knotenstruktur: < /p>
template
struct IdlePool{
public:
struct Node { // sizeof (T) >= 8bytes;
union {
Node* next;
T value;
};
};
public:
Node* head = nullptr;
public:
void push(T* value) {
auto node = (Node*)(value); // ❶
node->next = head;
head = node;
}
T* pop() {
auto ret = head;
if (head) head = head->next;
return (T*)(ret); // ❷
}
};
struct Data {
int a, b,c=10;
};
int main(){
auto a = new Data;
auto b = new Data;
IdlePool pool;
pool.push(a);
pool.push(b);
auto c = pool.pop();
std::construct_at(c, 1,2,3); // ❸
std::println("{}{}{}", c->a, c->b, c->c);
}
Ich implementiere einen nicht intrusiven Idle-Objektpool in C ++ unter Verwendung einer Vereinigung in einer Struktur. Verstößt dieser Code die strenge Aliasing-Regel? Um dies zu erreichen, verwende ich eine Vereinigung innerhalb einer Knotenstruktur: < /p> [code]template struct IdlePool{ public: struct Node { // sizeof (T) >= 8bytes; union { Node* next; T value; }; }; public: Node* head = nullptr; public: void push(T* value) { auto node = (Node*)(value); // ❶ node->next = head; head = node; } T* pop() { auto ret = head; if (head) head = head->next; return (T*)(ret); // ❷ } };
struct Data { int a, b,c=10; }; int main(){ auto a = new Data; auto b = new Data; IdlePool pool; pool.push(a); pool.push(b);
auto c = pool.pop(); std::construct_at(c, 1,2,3); // ❸ std::println("{}{}{}", c->a, c->b, c->c); } [/code]
Ich versuche meinen Kopf um die implizite Lebensdauer- und Aliasing -Regeln in C ++ zu wickeln. Einige Operationen werden als implizit erstellen Objekte in einem bestimmten Speicherbereich. Für jede...
Ich schreibe einen Rest-API mit Fastapi. Ich verwende Pydantic für die Datenvalidierung.
Ich muss so etwas wie diese Arbeit machen. Es wäre einfach, wenn ich einfach die CD in die Requetion von 1...
Ich habe die folgende neue Zeile in Php 7 gesehen, aber niemand erklärt wirklich, was es bedeutet. Ich habe es gegoogelt und alles, worüber sie sprechen, ist, dass du es aktivierst oder nicht wie...