struct ptr{
int node;
ptr *next;
ptr(){}
ptr(int _node, ptr *_next){ node=_node; next=_next; }
};
struct list_t{
ptr *sht;
int size;
void push(int node){
size++;
sht=new ptr(node,sht);
}
}shthead[100001], comp[200001], tree[200001];
struct ptr एक लिंक्ड सूची के रूप में प्रयोग किया जाता है शून्य करने के लिए * बदल जाता है। लेकिन जब मैंने जीडीबी में कोड डीबग किया, तो मैंने पाया कि पीआरटी * सभी को शून्य * में परिवर्तित कर दिया गया था।
GDB आउटपुट:सी ++: क्यों एक struct के एक स्व सूचक स्वचालित रूप से
(gdb) pt ptr
type = struct ptr {
int node;
void *next;
public:
ptr(void);
ptr(int, void *);
}
हालांकि, मैं अब भी struct का डेटा देख सकते हैं अगर मैं उन्हें वापस ptr * करने के लिए gdb में गुप्त।
कृपया इसका क्या कारण है?
मैं आर्क लिनक्स, गनोम, जी ++ 4.5.0, जीडीबी 7.1 का उपयोग कर रहा हूं। किसी भी संकलन झंडे के बिना लेकिन एजी।
This GDB was configured as "i686-pc-linux-gnu"
यह मेरे सिस्टम पर 'ptr *' दिखाता है। आप किस संकलन झंडे का उपयोग करते थे? जी ++ और जीडीबी का क्या संस्करण? – Thomas
अजीब, मैं भी जीडीबी 7.1 का उपयोग करता हूं, लेकिन जी ++ 4.4.3। 4.5 रिलीज नोट्स इस दिशा में किसी भी प्रकार के बदलाव पर संकेत नहीं देते हैं। http://gcc.gnu.org/gcc-4.5/changes.html – Thomas
जीडीबी 7.0.1 का उपयोग करके बस कुछ और डेटा पॉइंट भरने के लिए मुझे g ++ 4.2.4 और 4.3.3 के साथ सही उत्तर मिलता है लेकिन 4.5 के साथ। 0 जीडीबी पॉइंटर को 'शून्य *' के रूप में दिखाता है। जीसीसी (या जीडीबी?) में एक बग की तरह दिखता है –