C语言 分配内存不起作用



我正在尝试分配一些内存作为无符号字符*,但是当我这样做时,指针似乎尚未初始化!

    unsigned char* split = (unsigned char*) malloc ((sizeof(unsigned char)*sizeof(unsigned int)));
    memset(&split,0,sizeof(int));
    if(split==NULL) {
       std::cout<<"Unable to allocate memory!n";
       system("pause");
       return 1;
    }

但是,每次我运行时都会收到错误消息。无论我使用什么数据类型,它似乎都会发生!

您的memset调用不会写入您刚刚分配的缓冲区,即split指向的缓冲区。它写入split变量本身存储的内存区域 - 如 &split 所示。于是split就变得NULL了.

当你调用 memset() 时,你是在清零split变量本身占用的内存,而不是split指向的内存(malloc()分配的内存)。您需要删除&运算符:

unsigned char* split = (unsigned char*) malloc (sizeof(int));
if(split==NULL) {
   std::cout<<"Unable to allocate memory!n";
   system("pause");
   return 1;
}
memset(split,0,sizeof(int));

相关内容

  • 没有找到相关文章

最新更新