我正在尝试分配一些内存作为无符号字符*,但是当我这样做时,指针似乎尚未初始化!
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));