在函数内部分配内存并将其返回



我想传递一个指针给我的函数,并分配这个指针所指向的内存。我在其他帖子中读到,我应该传递一个双指针到这个函数,我这样做了,但我一直得到分割错误:

#include <iostream>
#include <stdlib.h>
using namespace std;
void allocate(unsigned char** t)
{
    *t=(unsigned char*)malloc(3*sizeof(unsigned char));
    if(*t == NULL)
        cout<<"Allcoation failed"<<endl;
    else
        for(int m=0;m<3;m++)
            *(t[m])=0;
}
int main()
{
    unsigned char* t;
    allocate(&t); 
    cout<<t[0]<<" "<<t[1]<<endl;
    return 0;
}

的结果总是这样:分段故障(堆芯转储)

我不认为这段代码遗漏了什么。会出什么问题呢?

看这一行:*(t[m]) = 0;。因为你给了t[m]优先级,它将寻找m -指向char的指针并对其解引用。你真正想做的是解引用t,并找到char m之后的地方,或者(*t)[m]。做这样的改变会使你的代码完美地工作:http://ideone.com/JAWeS2

我觉得这行写错了:

*(t[m])=0;

考虑m = 2的情况。这是要写入的未分配内存。您没有做任何事情从运行时堆中获取它。

你可能会这样想:

t[0][m]=0;

相关内容

  • 没有找到相关文章

最新更新