আমি নিম্নলিখিত সি ধাঁধাটি পেরিয়ে এসেছি:
প্রশ্ন: নীচের প্রোগ্রামটি কেন আইএ -৪৪ তে সেগফল্ট করে, তবে আইএ -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
অন্তর্ভুক্ত না করার মতো নির্বোধ কিছু ?