malloc只分配4位?

jer*_*oen 1 c++ malloc

我正在尝试制作一些c程序,我坚持使用malloc命令.这是我的代码:

        #include <stdlib.h>
        #include <iostream>
        #include "Oef1.h"
        using namespace std;

 some methode clled by main{
         int ** q=NULL;
         int m=read(q);
}


 int read(int ** q){
          int m=3;
          int n=5; //n and m are beeing asked, but for debugging hard-coded
          cout << sizeof(int*) << endl;     // returns 4
          cout <<sizeof(q) << endl;        //returns 4
          cout <<m*sizeof(int*) << endl;   //returns 12
          q=(int**)realloc(q,m*sizeof(int*));
          cout <<sizeof(q) << endl;         //should return 12 but returns 4
          for(int k =0; k < m; k++){
             q[k] = (int*)malloc(n*sizeof(int));
           }
            return m;
    }
Run Code Online (Sandbox Code Playgroud)

问题是,在malloc命令之后,sizeof(q)仍然是4,它应该是12(3*4).我知道你可以使用[]括号在c ++中创建数组,但我喜欢用malloc来实现学习目的.这可能是一个愚蠢的错误,但我找不到它.

Dan*_*ath 11

sizeof返回数据类型的大小,这是一个指针.在您的系统上,您会发现指针总是4个字节(而不是位).sizeof在指针上使用时不返回数组的大小.