char* p=(char *)malloc(100);siizeof(p)
时间: 2023-08-16 09:08:21 浏览: 82
sizeof(p) 的结果是根据编译器和操作系统的不同而不同。
在大多数情况下,指针在 32 位系统上占用 4 个字节,在 64 位系统上占用 8 个字节。所以,如果你的系统是 32 位,那么 sizeof(p) 的结果是 4;如果你的系统是 64 位,那么 sizeof(p) 的结果是 8。
需要注意的是,sizeof(p) 返回的是指针变量 p 所占用的内存空间大小,并不是动态分配的内存块的大小。对于动态分配的内存块,你需要使用 malloc 分配内存后,通过其他手段来记录所分配的内存块的大小。
相关问题
char* dest = (char*)malloc(len+1)
在你提供的代码中,`char* dest = (char*)malloc(len+1)` 是动态分配内存的语句。它的作用是使用 `malloc` 函数来分配 `len + 1` 字节的内存空间,并将其地址赋值给指针变量 `dest`。
在这种情况下,你正在为一个字符指针申请内存空间,以便存储一个字符串。`len+1` 来自于 `len` 是源字符串的长度,而额外的 `+1` 是为了存储字符串的结束符 `\0`。
需要注意的是,为了使用这段内存空间,你需要确保分配成功并且不为 `NULL`。同时,在使用完这段内存空间后,你还需要使用 `free(dest)` 来释放它,以避免内存泄漏。
C语言 *p=(char*)malloc(1+sizeof("testing"));什么意思
这段代码的作用是动态分配内存空间,并将其地址存储在指针变量p中。具体来说,这段代码的含义如下:
1. sizeof("testing")用于计算字符串"testing"所占用的字节数,这里为7个字符加上字符串结尾的空字符'\0'所占用的1个字节,因此sizeof("testing")的值为8。
2. 在进行内存分配之前,需要将其类型进行强制转换,即(char*)malloc(1+sizeof("testing"))。这是因为在C语言中,malloc函数返回的是void*类型的指针,需要将其转换为需要的类型。在这里,我们将其转换为char*类型的指针。
3. malloc函数用于动态分配内存空间,它的参数为所需的字节数。这里我们需要分配的内存空间大小为1+sizeof("testing"),即8个字节。
4. 将malloc函数返回的指针赋值给指针变量p,即*p=(char*)malloc(1+sizeof("testing"))。这样,指针变量p就指向了动态分配的内存空间。
总的来说,这段代码的作用是动态分配了一个长度为8个字节的内存空间,并将其地址存储在了指针变量p中。需要注意的是,在使用完动态分配的内存空间后,需要使用free函数将其释放,以避免内存泄漏的问题。例如:
```c
char *p = (char*)malloc(1+sizeof("testing"));
strcpy(p, "testing");
printf("%s\n", p);
free(p);
```
这里,我们使用strcpy函数向动态分配的内存空间中赋值了字符串"testing",然后输出了该字符串,最后使用free函数释放了动态分配的内存空间。