gpt4 book ai didi

c - C语言中如何为指针引用的变量分配内存?

转载 作者:行者123 更新时间:2023-11-30 20:25:31 24 4
gpt4 key购买 nike

C中如何为指针引用的变量分配内存?

此代码对我来说无法正常工作。malloc 之后 pBitmap 是 0x600020 ""。我只能分配第一个字符,但是在尝试分配更多字符时它会崩溃,因此很明显没有正确分配内存。

int bmp_read_file(char * filename, BMPFILE *bmpfile, ...)
{
int num; bool loadbitmap; char ** pBitmap;
// this code is kinda shorten
va_list ap;
va_start(ap, num);
loadbitmap = va_arg(ap, bool);
pBitmap = va_arg(ap, char ** );
va_end(ap);
if (loadbitmap == 1){
*pBitmap = (char *) malloc( bmpfile->dib.raster_size );
// pBitmap is 0x600020 ""
*pBitmap[0]='1';
*pBitmap[1]='4'; // pBitmap is 0x600020 "1"
fclose(fp);
}
else
fclose(fp);
return 0;
}

我这样调用它:

  BMPFILE *bmpfile;
bool loadbitmap = true;
char * buffer; // bitmap buffer needed to be allocated
bmp_read_file(argv[1],&bmpfile,loadbitmap,&buffer);

最佳答案

更改:

  *pBitmap[0]='1';
*pBitmap[1]='4'; // pBitmap is 0x600020 "1"

致:

  (*pBitmap)[0]='1';
(*pBitmap)[1]='4'; // pBitmap is 0x600020 "1"

现在,您的代码正在执行相当于 *(pBitmap[0]) = '1' 的操作,鉴于您分配 *pBitmap< 的方式,这没有任何意义.

关于c - C语言中如何为指针引用的变量分配内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com