我正在尝试将一些内存分配为unsigned char *但是当我执行指针时似乎没有初始化!
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;
}
但是每次运行我都会收到错误消息。无论我使用哪种数据类型,它似乎都会发生!
答案 0 :(得分:4)
您的memset
调用不会写入您刚刚分配的缓冲区,split
指向的缓冲区。它写入split
变量本身存储的内存区域 - 由&split
指向。于是split
成为NULL
。
答案 1 :(得分:0)
当您调用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));