内存泄漏到整数C ++

时间:2016-08-08 23:51:10

标签: c++ arduino

我已经为我的代码添加了一个新函数,现在我使用的整数受到某种内存溢出的影响。 (请注意,这与Arduino Uno的.ino草图有关)

而不是用xPos--;递减1,而是递减256 (如果我删除了printText函数,则溢出不会发生。)

整数xPos和char缓冲区用

定义
int xPos = 0;
char buffer[26];

就在包含之下。 u8g.drawStr函数在我的显示器上绘制字符串,对x和y采用两个整数,并将char *作为参数作为字符串。

void printText(const char* inputText)
{
    int y = yPos;
    for (int i = strlen(inputText); i > 0; i -= 25)
    {
        strncpy(buffer, &inputText[strlen(inputText) - i], i >= 25 ? 25 : i);
        buffer[26] = '\0';
        u8g.drawStr(0, y, buffer);
        y += 8;
    }
}

任何理事会都会非常感激:)

1 个答案:

答案 0 :(得分:4)

你的缓冲区只有26个插槽:

09-Aug-2016 09:41:42.718 SEVERE [http-nio-8080-exec-10] com.sun.jersey.spi.container.ContainerRequest.getEntity A message body reader for Java class org.glassfish.jersey.media.multipart.FormDataMultiPart, and Java type class org.glassfish.jersey.media.multipart.FormDataMultiPart, and MIME media type multipart/form-data; boundary=myRandomBoundary12345 was not found.
The registered message body readers compatible with the MIME media type are:
*/* ->
  com.sun.jersey.core.impl.provider.entity.FormProvider
  com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
  com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
  com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
  com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
  com.sun.jersey.core.impl.provider.entity.EntityHolderReader
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
  com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General

然而你试着写到第27个插槽:

    char buffer[26];

那不行。 (零是第一个插槽,一个是第二个插槽,依此类推。所以26是第27个插槽。)