मैं निम्नलिखित सी पहेली पर आया:
प्रश्न: IA-64 पर निम्न प्रोग्राम क्यों नहीं आता है, लेकिन IA-32 पर ठीक काम करता है?
int main()
{
int* p;
p = (int*)malloc(sizeof(int));
*p = 10;
return 0;
}
मुझे पता है कि int
64 बिट मशीन पर आकार एक सूचक के आकार के समान नहीं हो int
सकता है ( 32 बिट हो सकता है और सूचक 64 बिट हो सकता है)। लेकिन मुझे यकीन नहीं है कि यह उपरोक्त कार्यक्रम से कैसे संबंधित है। कोई विचार?
#include stdlib.h
(
#include <stdlib.h>
, यह पूरी तरह से मिल रहा है, लेकिन यह सवाल में नहीं है।
sizeof(int) == sizeof(int*)
, जहां , उदाहरण के लिए पॉइंटर्स वापस आ गए, हालांकि int
उपयोग किए गए कॉलिंग कन्वेंशन में एस करने के लिए एक अलग रजिस्टर ।
malloc()
। जीसीसी कहता है: warning: incompatible implicit declaration of built-in function 'malloc'
भी।
stdlib.h
शामिल नहीं किया जा रहा है?