malloc如何区分我分配一个long long整数和两个整数数组?

问题描述

在我的OS中long long int是:8个字节。 int是4个字节。

int *p = malloc(4);

代码为堆上的整型变量分配4个字节。

int *p = malloc(8);

这将在数组上分配一个长整数,例如“一个变量”或两个项目。

我如何分配8个字节长的整数? 我如何分配一个包含2个项目的数组?

解决方法

malloc()仅分配原始内存,是将其视为数组还是单个变量,这取决于调用者中内存的使用方式。

int *p = malloc(2 * sizeof(int));

将内存作为2 int的数组进行处理。然后,您可以这样做:

p[0] = 1;
p[1] = 2;

它将向内存中写入两个int

long int *p = malloc(sizeof(long int));

将内存作为单个long int(或等效地为1 long int的数组)进行处理。然后,您可以这样做:

*p = 12345678;

它将把那个长整数写入内存。

int为4字节和long int为8字节的系统上,它们两个都将分配8个字节的内存。

,

如果要使用8个字节的整数,则称为const val RC_SIGN_IN = 0 class MainActivity : AppCompatActivity() { lateinit var observer:StartActivityForResults private lateinit var mGoogleSignInClient:GoogleSignInClient override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) observer = StartActivityForResults(activityResultRegistry) lifecycle.addObserver(observer) val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) .requestEmail() .build() mGoogleSignInClient = GoogleSignIn.getClient(this,gso); sign_in_button.setOnClickListener{ signIn() } } private fun signIn() { val signInIntent = mGoogleSignInClient.signInIntent startActivityForResult(signInIntent,RC_SIGN_IN) } override fun onActivityResult(requestCode: Int,resultCode: Int,data: Intent?) { super.onActivityResult(requestCode,resultCode,data) // Result returned from launching the Intent from GoogleSignInClient.getSignInIntent(...); if (requestCode == RC_SIGN_IN) { // The Task returned from this call is always completed,no need to attach // a listener. val task = Auth.GoogleSignInApi.getSignInResultFromIntent(data) task?.isSuccess Toast.makeText(this,"Success",Toast.LENGTH_LONG).show() } else{ Log.i("title","OKCODE ${Activity.RESULT_OK} RESULTCODE ${resultCode}") } } } int64_t / int64_t

如果这是关于C的,则使用long long

malloc

如果这是关于C ++的,则使用int64_t* p = malloc(sizeof(int64_t));

new

使用原始代码,您将分配任意大小的映射到固定大小类型的指针,其中int64_t* p = new int64_t; 通常为4个字节,换句话说,您有足够的空间来容纳int

注意:出于可移植性的考虑,始终最好用基本类型而不是抽象数字来表达您的分配。 int[2]可能会为2 x malloc(8)分配内存,也可能不会,这取决于int是什么。 sizeof(int)始终可以正常工作。