Min*_*ran 3 c pointers initialization
char* str = (char*)malloc(100*sizeof(char));
strcpy(str, ""); //Does this line initialize str to an empty string?
Run Code Online (Sandbox Code Playgroud)
在调用第1行之后,分配的内存是否包含垃圾?在拨打第2行之后怎么办?
在调用第1行之后,分配的内存是否包含垃圾?
它可以包含任何内容,因为malloc根据标准不需要初始化内存,因此在大多数实现中也不应该.它很可能只包含那个存储器的前一个"用户"放在那里的任何数据.
在拨打第2行之后怎么办?
使用该指令,您将\0"字节值"0 的字符复制到分配的内存的第一个字节.其他一切仍然没有动过.你也可以做str[0] = '\0'甚至*str = '\0'.所有这些选项都str指向"空字符串".
另请注意,由于您标记了问题C而不是C++,因此转换返回值malloc是多余的.
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |