C 斯特伦没有';t使用指向数组的指针返回正确的值
我有以下代码:C 斯特伦没有';t使用指向数组的指针返回正确的值,c,C,我有以下代码: char* realtor_command[120]; for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){ realtor_command[i]=malloc(sizeof(120)); } realtor_command[0]="test_string" realtor_command[1]="next_test_string" 在此代码中: char* realtor_command[120]; for(int i=0
char* realtor_command[120];
for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){
realtor_command[i]=malloc(sizeof(120));
}
realtor_command[0]="test_string"
realtor_command[1]="next_test_string"
在此代码中:
char* realtor_command[120];
for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){
realtor_command[i]=malloc(sizeof(120));
}
这也将避免代码中的内存泄漏
请注意,您可能需要确保读取的字符串包含换行符,以确保输入适合您的缓冲区:
if (strstr(input_buffer, "\n") == NULL) {
// error, input didn't fit in our buffer!
}
在此代码中:
char* realtor_command[120];
for(int i=0;i<REALTOR_MAX_COMMAND_LENGTH;i++){
realtor_command[i]=malloc(sizeof(120));
}
这也将避免代码中的内存泄漏
请注意,您可能需要确保读取的字符串包含换行符,以确保输入适合您的缓冲区:
if (strstr(input_buffer, "\n") == NULL) {
// error, input didn't fit in our buffer!
}
请显示如何调用strlen,以及错误的值。什么是
sizeof(120)
??您分配的内存比120字节少得多。这将是sizeof(int),4或8。@JaVaPG您得到了什么结果?正如您所知,此代码应该是(int i=0;i<120;i++){(因为数组是120个字符串)您可能应该做一些与malloc
不同的事情,因为您正在该循环中泄漏内存。基本上,您正在分配sizeof(int)
字节的数据(4-8字节),但在循环之后,您正在更改指针以指向新字符串(“test_字符串”),因此您永远不会使用分配的数据。请显示如何调用strlen,以及错误的值。sizeof(120)
?您分配的内存比120字节少得多。这将是sizeof(int),4或8。@JaVaPG您得到了什么结果?正如您所知,此代码应该是(int i=0;i<120;i++){
(因为数组是120个字符串),您可能应该做一些与malloc
不同的事情,因为您正在该循环中泄漏内存。基本上,您正在分配sizeof(int)
字节的数据(4-8字节),但在循环之后,您将指针更改为指向新字符串(“test_string”),因此您永远不会使用分配的数据。